2013-07-29 7 views
0

test.exe를 작성하여 충돌이 발생하고 MinidumpWriteDump를 사용하여 .dmp 파일을 생성하고 parser.exe를 사용하여 해당 dmp 파일의 정보를 읽고 인쇄합니다.StackWalk64를 사용하여 스택이 적음

parser.exe에서 StackWalk64를 사용하여 해당 dmp 파일에있는 모든 스레드의 모든 스택 추적을 가져옵니다. 하지만 이제는 비주얼 스튜디오보다 적은 스택을 얻을 수 있다는 것을 알았습니다.

Google, stackoverflow, codeproject에서 찾을 수있는 모든 해결책을 시도했지만 아무 것도 변경되지 않았습니다.

다음

는 parser.exe 할 것입니다 :

  1. SymInitialize
  2. MiniDumpReadDumpStream을 된 .dmp 파일에 지정된 PDB/EXE/DLL을로드하는 모든 정보를
  3. SymLoadModuleEx & SymFindFileInPath을 읽을 수
  4. 초기화 STACKFRAME64 및 루프에서 StackWalk64를 호출하십시오.

Visual Studio와 같은 스택 수를 얻는 방법을 알고 싶습니다. 필요한 경우 여기에 더 많은 코드를 붙여 넣을 수 있습니다. 도움이 될 것입니다.

답변

1

StackWalk64는 특히 최적화 된 프레임을 통해 전체 스택 추적을 추적 할만큼 견고하지 않습니다. (예를 들어,이 stackoverflow 질문 here 참조).

가장 좋은 방법은 실제로 WinDbg과 함께 제공된 디버그 엔진을 사용하는 것입니다.

+0

감사합니다, 유용한 팁 : 다음은 디버그 엔진 API를 사용하는 방법을 보여 블로그 게시물의 몇 가지 있습니다. –