2014-10-17 125 views
2

我使用QT創建者開發了一個QT應用程序。該程序有時會在Windows 7和XP上崩潰。上次發生這種情況時,我使用任務管理器來創建轉儲文件。我試圖使用WinDbg的但是有錯誤它不能夠找到「符號」文件QT的負荷:在WinDbg中調試QT應用程序

*** ERROR: Symbol file could not be found. Defaulted to export symbols for QtWebKit4.dll - 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for QtCore4.dll - 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for QtGui4.dll - 
*** ERROR: Module load completed but symbols could not be loaded for MyApp1.1b.exe 
*** WARNING: symbols timestamp is wrong 0x522be0b3 0x522bdb3e for mswsock.dll 
*** WARNING: symbols timestamp is wrong 0x4a5be0b0 0x4ce7ba42 for winmm.dll 
*** WARNING: symbols timestamp is wrong 0x4a5be093 0x4a5bdb3c for uxtheme.dll 
*** WARNING: symbols timestamp is wrong 0x53b9ff75 0x53b9f968 for AudioSes.dll 

有誰知道如何使用WinDbg的或類似的工具QT應用程序調試應用程序崩潰?

+1

您正在調試發行版本。該應用程序的調試版本將鏈接到'QtCore4D.dll'等等,我希望在這種情況下可以找到符號。 – UmNyobe 2014-10-17 13:05:51

回答

2

爲了調試崩潰轉儲,您需要爲Qt提供調試符號(.pdb文件)。預構建SDK中提供的庫不附帶調試符號,因此您必須構建庫你自己爲了讓他們確保設置下列編譯器標誌:

QMAKE_CXXFLAGS_RELEASE += -Zi 
QMAKE_LFLAGS_RELEASE += /DEBUG /OPT:REF 

假設你正在使用MSVC和QMake。您當然需要使用相同的標誌來構建自己的應用程序。然後確保在調試器中設置了符號路徑,對於WinDbg,您需要使用.symfix.sympathFile > Symbol File Path,並將其指向包含.pdb文件的所有目錄。如果你使用的是Visual Studio,它也會要求原始的二進制文件可用,因爲它使用了一個完全不同的調試器,這個調試器看起來行爲不同。如果你想要更復雜的話,可以看看symstore或者breakpad。

有關更多信息,請參閱我的問題和回答here