查看完整版本: [-- mingw 版本Qt程序崩溃 有啥方法可以快速排查崩溃原因吗 --]

QTCN开发网 -> Qt基础编程 -> mingw 版本Qt程序崩溃 有啥方法可以快速排查崩溃原因吗 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

shixingya 2018-01-30 19:57

mingw 版本Qt程序崩溃 有啥方法可以快速排查崩溃原因吗

mingw 版本Qt程序崩溃 有啥方法可以快速排查崩溃原因吗
偶现问题

mingw 可以生成pdb文件 用dmp来调试吗, windows环境

shixingya 2018-01-31 09:01
http://blog.csdn.net/lanhy999/article/details/12189375

   这个帖子对于小程序有用 大型程序 怎么获取崩溃时堆栈信息呢
急求 好用的 快速排查 mingw 版本Qt程序崩溃 崩溃原因的方法

大漠之鹰 2018-01-31 09:09
gdb调试一下,看看崩溃的点是不是一样。崩溃报什么错阿

shixingya 2018-01-31 15:40
首先,我们可以使用位于{mingw path} / bin的addr2line.exe。例如,如果你得到这样的崩溃日志:
"E:\\qt\\untitled5.exe"
"Exception Addr:  00904B21 :Module: C:\\Qt\\Qt5.9.0\\5.9\\mingw53_32\\bin\\Qt5Widgetsd.dll"
"Exception Code:  C0000005 :Read Address:  00000000"
"Instruction:  8B 01 8B 40 34 C7 04 24 00 00 00 00 FF D0 83 EC"
"Registers: "
"EAX: 00904B1E  EBX: 185304C8  ECX: 00000000  EDX: 18500048"
"ESI: 1851DD60  EDI: 755E16DD  ESP: 0028FD20  EBP: 0028FD68"
"EIP: 00904B21  EFlags: 00010202"
"00904B21  :C:\\Qt\\Qt5.9.0\\5.9\\mingw53_32\\bin\\Qt5Widgetsd.dll"
"0040187C  :E:\\qt\\untitled5.exe"
"004017AB  :E:\\qt\\untitled5.exe"
"004016BC  :E:\\qt\\untitled5.exe"
"00403B45  :E:\\qt\\untitled5.exe"
我们使用addr2line来查找崩溃点

C:\Qt\Qt5.9.0\Tools\mingw530_32\bin>addr2line.exe -f -e e:\qt\untitled5.exe 0040187C 004017AB 004016BC 00403B45
_ZN4testC2Ev
E:\qt\untitled5/test.cpp:6
_ZN10MainWindowC2EP7QWidget
E:\qt\untitled5/mainwindow.cpp:12
_Z5qMainiPPc
E:\qt\untitled5/main.cpp:35
WinMain@16
c:\Users\qt\work\qt\qtbase\src\winmain/qtmain_win.cpp:104


这样做就可以了 很不错

stlcours 2018-01-31 17:22
shixingya:首先,我们可以使用位于{mingw path} / bin的addr2line.exe。例如,如果你得到这样的崩溃日志:
"E:\\qt\\untitled5.exe"
"Exception Addr:  00904B21 :Module: C:\\Qt\\Qt5.9.0\\5.9\\mingw53_32\\bin\\Qt5Widgetsd.dll"
"Exception Code:&nb .. (2018-01-31 15:40) 

这是你亲测的结果?这么牛!

shixingya 2018-01-31 18:46
stlcours:这是你亲测的结果?这么牛! (2018-01-31 17:22) 

亲测可用

stlcours 2018-01-31 20:13
shixingya:亲测可用 (2018-01-31 18:46) 

既然是同道中人,我也整天使用mingw。那么还想问一下,mingw的编译质量可靠吗?能用于生产开发吗?还有它的-O3优化可靠吗?好几年前记得LLVM的-O3居然有非常明显的bug,没人敢用O3。谢谢赐教。

shixingya 2018-01-31 20:32
stlcours:既然是同道中人,我也整天使用mingw。那么还想问一下,mingw的编译质量可靠吗?能用于生产开发吗?还有它的-O3优化可靠吗?好几年前记得LLVM的-O3居然有非常明显的bug,没人敢用O3。谢谢赐教。 (2018-01-31 20:13) 

mingw我们已经商用两年多了

mugua1987022 2019-07-08 15:36
shixingya:首先,我们可以使用位于{mingw path} / bin的addr2line.exe。例如,如果你得到这样的崩溃日志:
"E:\\qt\\untitled5.exe"
"Exception Addr:  00904B21 :Module: C:\\Qt\\Qt5.9.0\\5.9\\mingw53_32\\bin\\Qt5Widgetsd.dll"
"Exception Code:&nb .. (2018-01-31 15:40) 

我按照你这种方法,不打印行,麻烦帮我看看哪里有问题,谢谢!
Process:  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
Exception Addr:  005C589D   Module: C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
Exception Code:  C0000005
Read Address:  00000000
Instruction:  8B 00 83 C0 0C 8B 18 8D 45 E8 C7 44 24 04 00 00
Registers:
EAX: 00000000  EBX: 00000000  ECX: 0022D430  EDX: 00000000
ESI: 0050B620  EDI: 0000000D  ESP: 0022D380  EBP: 0022D3B8
EIP: 005C589D  EFlags: 00010202
Call Stack:
005C589D  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
00439836  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
0040A0CE  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
0050B80F  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
68A22CA2  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\Qt5Core.dll
0050BECD  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
00407114  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
005C01AC  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
005BCC47  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\ROMCC.exe
68A20E44  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\Qt5Core.dll
009CB14A  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\Qt5Widgets.dll
02E7DB60  
009CE5E0  C:\Users\0216000533\Desktop\ROMC_V1.01.04\ROMC\Qt5Widgets.dll


D:\Qt\Qt5.5.1\5.5\mingw492_32>cd /d D:\Qt\Qt5.5.1\Tools\mingw492_32\bin

D:\Qt\Qt5.5.1\Tools\mingw492_32\bin>addr2line.exe -f -e C:\Users\0216000533\Desk
top\ROMC_V1.01.04\ROMC\ROMCC.exe 005C589D 00439836 0040A0CE 0050B80F 0050BECD 00
407114 005C01AC 005BCC47
??
fake:?
??
cygming-crtbegin.c:?
??
cygming-crtbegin.c:?
??
moc_crealtimereport.cpp:?
??
moc_cremotecontrol.cpp:?
??
cygming-crtbegin.c:?
??
fake:?
??
fake:?

newworker 2021-12-27 18:10
我这边试了debug版本可以定位到源码,但是release版本好像不能定位到源码,版主这边测试可以,是release版本下也可以吗,版主在release模式下有啥方法吗?


查看完整版本: [-- mingw 版本Qt程序崩溃 有啥方法可以快速排查崩溃原因吗 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled