Luke Stackwalker运行时返回错误,gprof工作正常

Luke Stackwalker运行时返回错误,gprof工作正常,c,windows,profiling,luke,C,Windows,Profiling,Luke,我习惯于使用gprof分析我的C代码,但我想开始使用基于GUI的Windows应用程序,如Luke Stackwalkergprof在我的二进制文件上运行得非常好,但Luke Stackwalker有一些问题: Launching executable C:\lshare\POT03\Eclipse\Debug\POTaak3.exe. SymInit: Symbol-SearchPath: ';.;C:\Program Files\Luke Stackwalker;C:\Program Fil

我习惯于使用
gprof
分析我的C代码,但我想开始使用基于GUI的Windows应用程序,如Luke Stackwalker
gprof
在我的二进制文件上运行得非常好,但Luke Stackwalker有一些问题:

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.

谁射杀了谁现在怎么了?我做错了什么?我确实记得使用了
-pg
标志。

我理解你为什么要这样做。Luke Stackwalker获取堆栈样本,但(上次我检查时)它没有总结代码行级别使用的挂钟时间的百分比。在Linux上,您可以使用lsstackpstack,Windows上必须有类似的工具。在您的情况下,我只是依靠IDE中的暂停按钮来执行。

符号类型-未知-意味着程序没有使用gcc-g选项编译以生成调试信息,或者Luke Stackwalker使用的microsoft debughelp库无法识别调试信息格式


请检查编译程序时是否使用了-g选项(而不是剥离可执行文件)。否则,最好知道您使用的是哪个gcc版本。

奇怪,从未出现过此错误。这是64位可执行文件吗?(我只在32位可执行文件中尝试过)。我总是使用VisualStudio2003进行编译,并使用/Zi选项生成调试信息。可能是Luke Stackwalker不识别gcc调试信息吗?gcc能否创建与Visual Studio兼容的调试信息?我查阅了gcc文档-如果您想使用gcc profiler(gprof)进行概要分析,应该使用pg。对于Luke Stackwalker,您使用的是外部探查器,除了调试信息外,它不需要应用程序中的特殊内容。尝试删除-pg并添加一个选项来生成可执行文件的调试信息-g可能足够了,但如果它不起作用,您可能需要寻找其他调试格式。希望这能有帮助。我没那么幸运<代码>符号类型:'-unknown-'可能是一条重要线索。不,它不是64位可执行文件。我仍然使用一台32位的笔记本电脑。顺便说一下,EXE本身执行得很好。我确信它是用
-g
编译的,因为
gdb
访问源代码没有问题。gcc版本信息:
gcc(gcc)3.4.5(mingw vista special r3)
尝试过,我确认它不起作用。Luke无法读取可执行文件中的调试信息。奇怪的是,我发誓我以前试过这个方法,它奏效了,但现在我无法让它奏效。