MiniDumpWriteDump를 통해 응용 프로그램의 런타임 중에 기록 된 전체 미니 덤프가 있습니다. 미니 덤프는 내 개발 컴퓨터와 다른 OS 버전의 컴퓨터에서 생성되었습니다.미니 덤프에서 스택 추적을 추출하는 방법은 무엇입니까?
이제 dbghelp.dll을 사용하여 미니 덤프에서 스택 추적을 추출하는 프로그램을 작성하려고합니다. 나는 MINIDUMP_MODULE_LIST를 걷고 SymLoadModule64를 호출하지만 이것은 공용 심볼 서버에서 pdbs (kernel32 등)를 다운로드하지 못합니다. 심볼 경로에 "C : \ Windows \ System32"를 추가하면 dll을 찾아 심볼을 다운로드하지만 물론 미니 덤프의 dll과 일치하지 않으므로 결과가 유용하지 않습니다.
그렇다면 dbghelp.dll에 적절한 pdbs를 다운로드하여 사용하는 방법은 무엇입니까?
[편집] 내가 SymLoadModule64 만 dbghelp 다운로드 할 PDB 파악하기 위해 단독으로는 불가능하므로 분명히 SymLoadModule64으로, 파일 이름과없는 버전/검사 정보를 취한다는 것은 잊어
.
정보는 실제로 MINIDUMP_MODULE_LIST에서 사용할 수 있지만 dbghelp API로 다시 전달하는 방법을 알지 못합니다.
추가 매개 변수를 사용하는 SymLoadModuleEx가 있지만, 필자가 필요로하는 것이거나 추가 매개 변수로 전달해야하는 것이 있는지는 알 수 없습니다.
[편집]
운이 지금까지 존재이기도 디버깅 SDK에서 중 Dbghelp.dll와 함께 배포 dbgeng.dll 내가 눈치 챘지만. MSDN은 문서화가 잘되어있어 windbg가 사용하는 것과 동일한 엔진이라고합니다. 어쩌면 스택 추적을 추출하는 데 사용할 수 있습니다.
MSDN이 개별 구성 요소 만 문서화하고 있지만 함께 사용하는 방법과 달리 미니 덤프를 처리하는 데있어 dbgeng.dll을 사용하는 방법에 대해 누구나 언급 할 수 있다면 도움이 될 것입니다. 내가 대신의 Dbghelp.dll dbgeng.dll 사용하는 것이 가능하다 업데이트에서 언급 한 것처럼 보인다,
:
당신은 아마도 미니 덤프를 너무 작게 만들었을 것입니다. DumpType 인수가있는 팅커. Debug + Windows + Modules 목록에 정확한 DLL 경로, 버전 및 타임 스탬프가 표시되는지 확인하십시오. –
아니, 문제가되지 않습니다. WinDbg에서 미니 덤프를로드하고 PDB를 올바르게 다운로드 할 수 있습니다. WinDbg에서 수동으로 덤프를 검사하는 대신 스택 검색을 자동화하려고합니다. – Zarat
해킹 경로를 가고 싶다면 ntsd에 명령을 내리고 출력을 캡처 할 수 있습니다. –