Отладка приложения QT в WinDbg

Я разработал приложение QT, используя QT Creator. Программа иногда дает сбой на Windows 7 и XP. В последний раз, когда это произошло, я использовал диспетчер задач для создания файла дампа. Я пытался использовать 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

Кто-нибудь знает, как отладить сбой приложения в приложении QT с помощью WinDbg или аналогичного инструмента?


person user1578653    schedule 17.10.2014    source источник
comment
вы отлаживаете версию выпуска. Отладочная версия приложения будет связана с QtCore4D.dll и т. д., и я ожидаю, что в этом случае будут найдены символы.   -  person UmNyobe    schedule 17.10.2014


Ответы (1)


Вам необходимо иметь отладочные символы (файлы .pdb) для Qt для отладки аварийного дампа. Библиотеки, поставляемые в предварительно собранном SDK, не поставляются с отладочными символами, поэтому вам придется самостоятельно создавать библиотеки, чтобы получите их, установив следующие флаги компилятора:

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

Предполагая, что вы используете MSVC и QMake. Вам, конечно, нужно будет создать собственное приложение с теми же флагами. Затем убедитесь, что в отладчике настроены пути к символам, для WinDbg вам нужно будет использовать .symfix или .sympath или File > Symbol File Path и указать его на все каталоги, содержащие файлы .pdb. Если вы используете Visual Studio, также потребуется, чтобы исходные двоичные файлы были доступны, поскольку он использует совершенно другой отладчик, который, похоже, ведет себя по-другому. Если вы хотите разобраться в этом более сложно, загляните в symstore или, может быть, в блокнот.

См. мой вопрос и ответ здесь для получения дополнительной информации.

person sjdowling    schedule 17.10.2014