3DMP engines
3D그래픽스 물리 수학, 프로그래밍 GPU Shader 게임엔진 알고리즘 디자인패턴 matlab etc..
wow64.dll 사용하는 프로세스 덤프 파일 디버깅[섭군]
해당 덤프를 VS 로 보면 wow64cpu.dll 내부 함수에서 콜스택이 멈춰있게 나오더군요. 마지막 콜스택이 wow64cpu!CpupSyscallStub+0x9 였습니다.
해당 함수를 구글에서 검색하니 바로 나오더군요(http://blogs.msdn.com/ntdebugging/archive/2008/06/03/how-to-debug-wow64-applications.aspx )
그전에는 저게 멀까 멀뚱멀뚱 했습니다. ㅠ_ㅠ;
결론적으로는 wow64exts.dll 을 활용해서 디버깅을 해야한다입니다.
실제적으로는 아래 두명령어만 있으면 끝이더군요.
!wow64exts.kb : 콜스택을 x86 모드로 변환해서 보여줍니다.
!wow64exts.sw : 디버깅 모드를 x86모드로 변환합니다. (이후 k 를 입력하면 정상적인 x86 콜스택이 정상적으로 보입니다.)
아래는 예입니다.
콜스택이 wow64cpu!CpupSyscallStub+0x9 에서 다 멈춰있습니다.
(windbg 명령어 입력란에 !wow64exts.sw 명령을 입력)
(잘 안보이시면 클릭하셔서 보세요)
!wow64exts.sw 를 사용여 x86모드로 전환 후 콜스택을 확인하였습니다. 소스까지 나오는군요.
원인은 맨위 스레드가 메인스레드로 아래 두스레드가 종료되기를 기다리고있습니다.
두번째 스레드가 동기화 객체 획득 후 Sleep(INFINITE) 을 하고있습니다.
세번째 스레드가 동기화 객체 획득을 하려고 대기중입니다.
알고나니 정말 편하군요. ㄷㄷ
'디버깅 & 스킬 > 디버깅 & VS Debugging' 카테고리의 다른 글
`WinDBG로 Deadlock 알아내기 (0) | 2012.12.14 |
---|---|
WinDbg를 이용해서 Critical Section 추적 (0) | 2012.12.14 |
프로세스 익스플로러 [Process Explorer v15.23] (0) | 2012.12.12 |
GFlags를 사용해 힙 영역 문제점 탐지 (0) | 2012.12.12 |
window7 덤프파일 생성 경로 (0) | 2012.12.12 |