2009-10-20 3 views
6

나는 크래시에 대한 자세한 정보를 얻기 위해 미니 크래시 덤프를 분석하려고하는데 심볼 파일이 필요합니다. 임 현재 단지보고 : "! 034eff74 0086eee9 00000000 0089d58d 034eff94 app_integrator을 ZNK14ACE_Data_Block4baseEv +은 0x6"rebase.exe를 사용하여 msys/mingw gcc 빌드 dll에서 디버깅 정보를 추출 하시겠습니까?

그것은 windbg를 읽을 수있는 형식으로 MSYS /와 Mingw GCC 내장 DLL에서 디버깅 정보를 추출 할 수 있습니까? 그렇지 않은 경우 MAP 파일을 어떤 방식으로로드하는 것과 같은 자세한 정보를 얻을 수있는 다른 방법이 있습니까?

dll 및 모든 포함 된 .o 파일은 -g 플래그로 빌드됩니다.

답변

5

Windbg는 mingw 설치시 -g에 의해 생성되는 디버깅 정보를 처리 할 수 ​​없습니다. 그러나 그것은 COFF 기호에 대처할 수 있다고합니다.

DLL의 소스 파일이 충분히 작 으면 COFF 디버그 정보를 빌드 할 수 있습니다 (-gcoff보다는 -gcoff).

따라서 Windbg는 COFF 기호를 처리 할 수 ​​있으며 GCC가이를 생성 할 수 있습니다. 그래서 거기에서 쉬워 질 것입니다, 그렇죠? gcc 컴파일 된 DLL을로드하는 Visual Studio 2008에서 생성 된 Win32 실행 파일로이 작업을 정확하게 수행하려고했습니다. 불행히도 나를 위해, -gcoff로 컴파일하지 않았다. Mingw의 gcc는 64k 줄 이상의 코드를 가진 프로젝트에 대해 COFF 기호를 생성하지 않습니다. 내가 사용하고 있던 DLL은 64K 코드 라인보다 훨씬 더 컸다. 슬프게도 나는 인정해야한다. 나는 포기하고 믿을만한 OutputDebugString으로 돌아 갔다. 그렇지 않으면 좀 더 완전한 지침을 줄 수 있습니다. gcc가 더 큰 소스 파일에 대해 COFF 기호를 사용하도록 선택하거나 DWARF 또는 STABS 데이터를 windbg의 내부 기호 테이블로 구문 분석하기위한 디버깅 확장을 작성하는 대체 옵션을 조사하는 것은 마음에 들지 않았습니다.

나는 문제를 해결했습니다!

추가 제안은 in this forum post at windbg.info입니다.

+0

완벽하니, 한번 시도해 보겠습니다. – Kristofer

+0

나는 그것이 효과가 있었는지, 그렇지 않다면 그 대신에 할 수 있었던 것이 무엇인지 알고 싶다! – Pete

+0

관련 메모에서 Profiler Very Sleepy는 -gstabs로 만든 디버깅 기호와 잘 작동합니다 –