2017-04-07 20 views
1

소급 기호를 pdb로 첨부 할 수있는 MiniDumpWriteDump를 사용하여 최소 Minidump를 생성하려고합니다. 현재이 작업은 MiniDumpWithFullMemory를 사용하여 작동하지만 매우 큰 덤프 파일을 생성합니다.Windows에서 기호 해결 Minidump

MiniDumpNormal을 사용하여 덤프를 생성하면 작은 파일이 생성되고 오프셋이있는 스택 추적이되지만 Visual Studio 나 WinDbg에서 심볼을로드 할 수 없습니다. 비주얼 스튜디오는

Binary was not built with debug information

WinDbg는 나에게 말한다라고 나에게 이야기 : 나는 플래그의 여러 조합을 시도했지만 MiniDumpWithFullMemory를 사용하지 않고 기호를로드 할 수

ERROR: Symbol file could not be found. Defaulted to export symbols for app.exe.

. 스택 추적을위한 심볼을 해결할 수있는 가장 작은 덤프를 생성하는 플래그 집합은 무엇입니까?

실행 파일은 디버그 정보 (/ Zi/DEBUG)로 작성되었으며 실행 프로세스에 디버거를 연결하면 심볼이로드되고 디버거를 충돌 프로세스에 연결하면 (WER 트리거링시) 심볼이로드되고 다음과 같은 덤프가 생성됩니다. MiniDumpWithFullMemory는 심볼을로드하지만 다른 덤프 유형은 심볼을로드하지 않습니다.

+2

mfc 응용 프로그램에서 "바이너리가 디버그 정보로 작성되지 않았습니다"라는 경고의 가능한 복제본이 있습니까?] (http://stackoverflow.com/questions/12721864/binary-was-not-built-with-debug-information- 경고 의미의 응용 프로그램) –

+1

이 정보는 디버그 정보로 작성되었으며 MiniDumpWithFullMemory로 덤프 할 때 심볼을로드합니다. – tx34

+0

심볼이 지연로드되어 defferred 로딩이 지연됩니다. 전체 일반 미니 orr 커널과는 달리로드 된 모듈 목록이 스트림이므로 디버그 버전과 디버그 상태를 모두 빌드해야합니다. 당신의 priject의 커맨드 라인에서/zi가 보이는지 확인하십시오. windbg가 기호를 내보낼 기본값이 아니라고한다면 이진은 기호없이 만들어 졌음을 의미합니다. 그리고 미니 덤프가 그대로 방치했습니다. – blabb

답변

1

이 문제의 가장 혼란스러운 부분은 감소 된 미니 덤프를 제외하고는 모든 디버깅이 올바르게 작동하는 방식이었습니다. 실행 파일을 검사하면 다음과 같은 문제가 발견되었습니다.

symchk app.exe /v

dumpbin /headers app.exe | grep pdb

EXE에 pdb 정보가 표시되지 않았습니다. PDB의 정보를 일으키는

MT.exe -manifest C:\app.exe.manifest -outputresource:C:\app.exe;1

을 제거하려면 : 내 빌드 시스템의 검사에 나는 사용하여 매니페스트가 내장 된 별도의 빌드 단계를 발견했다.

이 빌드 단계를 제거하면 디버그 정보가 유지되고 심볼을 MiniDumpNormal 덤프에서로드 할 수 있습니다.

+0

놀라운 결과입니다. 매니페스트 도구의 호기심에서, 디버거에서 덤프를 열려고 할 때 exe, 미니 덤프 및 pdb를 모두 같은 디렉토리에 넣으려고 했습니까? chmaatch를 사용하여 exe와 pdb 파일이 실제로 일치하는지 생각하는지 확인하는 것도 흥미로울 수 있습니다. –

+0

@AdrianMcCarthy pdb/exe/dmp를 같은 디렉토리에 두는 것으로 표시된 manifest를 사용할 때 심볼을로드하지 않습니다.Chkmatch는 제공 :'실행 : TimeDateStamp을 : 58ed3297 디버그 정보 : 2 (을 CodeView) 타임 스탬프 : 58ed3297 특성 : 0 MajorVer : 0 MinorVer : 0 크기 : 92 RVA : 01333e28 FileOffset : 01332a28 CodeView에 서명 : 0 \는 을 = 디버그 정보 : 58ed3297 특성 : 0 MajorVer : 0 MinorVer : 0 크기 : 20 RVA : 01333e84 FileOffset : 01332a84 디버그 정보 파일 : 형식 : PDB 7.00 결과 : 타의 추종을 불허 (이유 : 호환되지 않는 디버그 정보 타임 스탬프 (12) (알 수 없음) 형식)' – tx34