如何为 Windows 中的 Qt 应用程序生成良好的崩溃日志报告

发布于 2024-11-29 03:31:04 字数 2513 浏览 3 评论 0原文

我在 Qt 应用程序之一中收到了这样的崩溃日志,知道 qt 应用程序是如何实现的以获得如此好的崩溃报告吗?

//=====================================================
Crash Time:     Fri Aug 20 15:05:51 2010
Tool Version:   1.6 (08/21/09)
Exception code: C0000005 ACCESS_VIOLATION
Fault address:  06706000 00:01FED9E4 

Registers:
EAX:067689A0
EBX:00000000
ECX:067689A0
EDX:026304C0
ESI:00000012
EDI:01FEF018
CS:EIP:001B:06706000
SS:ESP:0023:01FEE4B4  EBP:01FEE4CC
DS:0023  ES:0023  FS:003B  GS:0000
Flags:00010206

Call stack:
Address   Frame
06706000  01FEE4B0  0000:00000000 
39DE15ED  01FEE4CC  QWidget::reparent+2D
39E7F560  01FEE6F4  QMenuBar::calculateRects+2D0
39E7E4B1  01FEE708  QMenuBar::performDelayedContentsChanged+41
39E7E600  01FEE714  QMenuBar::performDelayedChanges+20
39E7FF24  01FEE88C  QMenuBar::drawContents+24
39E4162E  01FEEA88  QFrame::paintEvent+3BE
39DE060E  01FEEB00  QWidget::event+39E
39D56AE8  01FEEB38  QApplication::internalNotify+1E8
39D56785  01FEEC68  QApplication::notify+865
39D0A89B  01FEEC7C  QApplication::sendSpontaneousEvent+3B
39D13DEF  01FEED2C  QApplication::winMouseButtonUp+20DF
39D1095E  01FEEFB0  QApplication::winFocus+FBE
7E418734  01FEEFDC  GetDC+6D
7E418816  01FEF044  GetDC+14F
7E41B4C0  01FEF098  DefWindowProcW+184
7E41B50C  01FEF0C0  DefWindowProcW+1D0
7C90EAE3  01FEF12C  KiUserCallbackDispatcher+13
7E418A10  01FEF13C  DispatchMessageW+F
39D25EED  01FEF194  QEventLoop::processEvents+2AD
39D76814  01FEF1AC  QEventLoop::enterLoop+74
39D766CD  01FEF1B8  QEventLoop::exec+1D
39D56CCC  01FEF1C8  QApplication::exec+1C
0044847A  01FEFED8  0001:0004747A c:\QtTest\too\main.exe
004465C0  01FEFEE8  0001:000455C0 c:\QtTest\too\main.exe
00F17729  01FEFF18  0001:00B16729 c:\QtTest\too\main.exe
00F148E7  01FEFFC0  0001:00B138E7 c:\QtTest\too\main.exe
7C816FD7  01FEFFF0  RegisterWaitForInputIdle+49

Crash Log:
( 54350.189194700) T> Compile_And_Link_User_Code_Body
( 54350.191276250) T> Create_Header_Expanded_Driver called for: testQt
( 54350.197348809) T> computil.adb:Get_Preprocessed_File called SOURCE_FILE=QtTest_TMP.8.20.54350.2.10156.40.c
( 54350.786834903) T> Create_Header_Expanded_Driver called for: testQt
( 54350.792789012) T> computil.adb:Get_Preprocessed_File called SOURCE_FILE=QtTest_TMP.8.20.54350.8.10156.49.c,
( 54351.056315801) G> add_all_testcase_user_code_to_harness failure COMPILER_PKG.COMPILE_ERROR_EXCEPTION
( 54351.056962252) G> HierarchyView::initCoverage() ...
( 54351.068467625) G> starting Parser::build_testobjectlist_from_xml()

I got such crash log in one of Qt application, Any idea how qt application is implemented to get such good crash report ?

//=====================================================
Crash Time:     Fri Aug 20 15:05:51 2010
Tool Version:   1.6 (08/21/09)
Exception code: C0000005 ACCESS_VIOLATION
Fault address:  06706000 00:01FED9E4 

Registers:
EAX:067689A0
EBX:00000000
ECX:067689A0
EDX:026304C0
ESI:00000012
EDI:01FEF018
CS:EIP:001B:06706000
SS:ESP:0023:01FEE4B4  EBP:01FEE4CC
DS:0023  ES:0023  FS:003B  GS:0000
Flags:00010206

Call stack:
Address   Frame
06706000  01FEE4B0  0000:00000000 
39DE15ED  01FEE4CC  QWidget::reparent+2D
39E7F560  01FEE6F4  QMenuBar::calculateRects+2D0
39E7E4B1  01FEE708  QMenuBar::performDelayedContentsChanged+41
39E7E600  01FEE714  QMenuBar::performDelayedChanges+20
39E7FF24  01FEE88C  QMenuBar::drawContents+24
39E4162E  01FEEA88  QFrame::paintEvent+3BE
39DE060E  01FEEB00  QWidget::event+39E
39D56AE8  01FEEB38  QApplication::internalNotify+1E8
39D56785  01FEEC68  QApplication::notify+865
39D0A89B  01FEEC7C  QApplication::sendSpontaneousEvent+3B
39D13DEF  01FEED2C  QApplication::winMouseButtonUp+20DF
39D1095E  01FEEFB0  QApplication::winFocus+FBE
7E418734  01FEEFDC  GetDC+6D
7E418816  01FEF044  GetDC+14F
7E41B4C0  01FEF098  DefWindowProcW+184
7E41B50C  01FEF0C0  DefWindowProcW+1D0
7C90EAE3  01FEF12C  KiUserCallbackDispatcher+13
7E418A10  01FEF13C  DispatchMessageW+F
39D25EED  01FEF194  QEventLoop::processEvents+2AD
39D76814  01FEF1AC  QEventLoop::enterLoop+74
39D766CD  01FEF1B8  QEventLoop::exec+1D
39D56CCC  01FEF1C8  QApplication::exec+1C
0044847A  01FEFED8  0001:0004747A c:\QtTest\too\main.exe
004465C0  01FEFEE8  0001:000455C0 c:\QtTest\too\main.exe
00F17729  01FEFF18  0001:00B16729 c:\QtTest\too\main.exe
00F148E7  01FEFFC0  0001:00B138E7 c:\QtTest\too\main.exe
7C816FD7  01FEFFF0  RegisterWaitForInputIdle+49

Crash Log:
( 54350.189194700) T> Compile_And_Link_User_Code_Body
( 54350.191276250) T> Create_Header_Expanded_Driver called for: testQt
( 54350.197348809) T> computil.adb:Get_Preprocessed_File called SOURCE_FILE=QtTest_TMP.8.20.54350.2.10156.40.c
( 54350.786834903) T> Create_Header_Expanded_Driver called for: testQt
( 54350.792789012) T> computil.adb:Get_Preprocessed_File called SOURCE_FILE=QtTest_TMP.8.20.54350.8.10156.49.c,
( 54351.056315801) G> add_all_testcase_user_code_to_harness failure COMPILER_PKG.COMPILE_ERROR_EXCEPTION
( 54351.056962252) G> HierarchyView::initCoverage() ...
( 54351.068467625) G> starting Parser::build_testobjectlist_from_xml()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苏别ゝ 2024-12-06 03:31:04

Qt 不提供创建崩溃报告的功能。

有问题的应用程序可能只是向操作系统注册一个异常过滤器,例如 SetUnhandledExceptionFilter(在 Windows 上),并自行编译并写入此崩溃报告。

如果您不喜欢使用自己的崩溃报告程序,可以使用一些不错的开源库来生成详细的崩溃报告,例如 Google 的 Breakpad。

http://code.google.com/p/google-breakpad/

There is no crash report creation provided as part of Qt.

The application in question probably just registers an exception filter with the operating system, e.g. SetUnhandledExceptionFilter on Windows, and compiles and writes this crash report out itself.

If you didn't fancy rolling your own crash reporter, there are some nice open source libraries you could use for generating verbose crash reports like Google's Breakpad.

http://code.google.com/p/google-breakpad/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文