내 C 코드의 프로파일 링에 gprof
을 사용했지만 Luke Stackwalker와 같은 GUI 기반 Windows 응용 프로그램을 사용하고자합니다. 누가 지금 무엇에Luke Stackwalker가 실행 중 오류를 반환하면 gprof가 정상적으로 작동합니다.
Launching executable C:\lshare\POT03\Eclipse\Debug\POTaak3.exe.
SymInit: Symbol-SearchPath: ';.;C:\Program Files\Luke Stackwalker;C:\Program Files\Luke Stackwalker;C:\WINDOWS;C:\WINDOWS\system32;SRV*C:\websymbols*http://msdl.microsoft.com/download/symbols;', symOptions: 530, UserName: 'Pieter'
OS-Version: 5.1.2600 (Service Pack 3) 0x100-0x1
C:\lshare\POT03\Eclipse\Debug\POTaak3.exe:POTaak3.exe (00400000), size: 61440, SymType: '-unknown-', PDB: '$Tƒ|'
C:\WINDOWS\system32\ntdll.dll:ntdll.dll (7C900000), size: 753664, SymType: '-unknown-', PDB: '©Uƒ|'
C:\WINDOWS\system32\kernel32.dll:kernel32.dll (7C7D0000), size: 1048576, SymType: '-unknown-', PDB: '©Uƒ|'
C:\WINDOWS\system32\msvcrt.dll:msvcrt.dll (77BE0000), size: 360448, SymType: '-unknown-', PDB: '©Uƒ|'
ERROR: SymGetModuleInfo64, GetLastError: 1114 (Address: 7C90E514)
Sorting profile data.
Done; 2 samples collected at 1.$ samples/second.
샷 : gprof
작품 완벽하게 내 바이너리에 잘하지만, 누가 복음 Stackwalker 어떤 문제가? 여기서 내가 뭘 잘못하고 있니? -pg
플래그를 사용하는 것을 기억했습니다.
이 오류가 발생하지 않았습니다. 이것은 64 비트 실행 파일입니까? (필자는 32 비트 실행 파일 만 사용해 보았습니다). 저는 항상 Visual Studio 2003으로 컴파일하고/Zi 옵션을 사용하여 디버그 정보를 생성합니다. Luke Stackwalker가 gcc 디버그 정보를 인식하지 못했습니까? gcc가 Visual Studio와 호환되는 디버그 정보를 만들 수 있습니까? – Patrick
gcc 문서를 찾았습니다. gcc 프로파일 러 (gprof)를 사용하여 프로필을 작성하려면 -pg를 사용해야합니다. Luke Stackwalker를 사용하면 디버그 정보를 제외하고 애플리케이션에서 특별한 것을 필요로하지 않는 외부 프로파일 러를 사용하고 있습니다. -pg를 제거하고 실행 파일에 디버그 정보를 생성하는 옵션을 추가하십시오. -g이면 충분하지만 작동하지 않으면 다른 디버그 형식을 찾아야 할 수도 있습니다. 희망이 도움이됩니다. – Patrick
나는 그걸로 운이 없었어요. 'SymType : '-unknown-''은 중요한 단서가 될 수 있습니다. – Pieter