2010-02-20 40 views
0

我習慣於用gprof來分析我的C代碼,但我想開始使用基於GUI的Windows應用程序,如Luke Stackwalker。 gprof作品完美的罰款對我的二進制文件,但盧克Stackwalker有一些問題: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. 

誰拍誰在現在怎麼辦?我在這裏做錯了什麼?我確實記得使用-pg標誌。

+0

奇怪的是,從來沒有得到這個錯誤。這是一個64位可執行文件嗎? (我只用32位可執行文件嘗試過)。我總是使用Visual Studio 2003編譯並使用/ Zi選項生成調試信息。難道盧克Stackwalker不承認gcc調試信息? gcc可以創建Visual Studio兼容調試信息嗎? – Patrick

+0

我查閱了gcc文檔。如果你想使用gcc profiler(gprof)進行配置文件,應該使用-pg。使用Luke Stackwalker,您使用的是外部分析器,除了調試信息外,它不需要特殊的應用程序。嘗試刪除-pg並添加一個選項以生成可執行文件的調試信息。 -g可能就足夠了,但如果它不起作用,您可能需要尋找其他調試格式。希望這可以幫助。 – Patrick

+0

我沒有這個運氣。 'SymType:'-unknown'可能是一條重要線索。 – Pieter

回答

0

我明白你爲什麼要something other than gprof。 Luke Stackwalker採用堆棧樣本,但是(最後一次檢查)它沒有總結在代碼行級別使用的掛鐘時間的包含百分比。在Linux上,您可以使用lsstackpstack,並且Windows上必須有類似的工具。在你的情況下,我只需要依靠IDE中的暫停按鈕來執行stackshots

0

SymType -unknown-表示該程序未使用gcc -g選項編譯生成調試信息,或者調試信息格式無法被Luke Stackwalker使用的microsoft debughelp庫識別。

請檢查您在編譯程序時是否使用-g選項(而不是剝離可執行文件)。否則,很高興知道您使用的是哪個gcc版本。

+0

我確定它正在用'-g'進行編譯,因爲'gdb'沒有訪問源代碼的問題。 gcc版本信息:'gcc(GCC)3.4.5(mingw-vista特殊r3)' – Pieter

+0

試過了,我確認它不起作用。 Luke無法讀取可執行文件中的調試信息。奇怪的是我發誓,我曾嘗試過這個,它的工作,但現在我不能讓它工作。 –

相關問題