QT应用程序崩溃但不容易复制,我捕获了转储堆栈以及如何通过堆栈找到源代码


  1. QT应用程序崩溃,但不容易复制
  2. 我已经捕获了转储堆栈以及如何通过堆栈查找源代码

编译工具:mingw

OS:Windows

我始终与Android(Linux)一起工作,我们可以使用AddR2line查找崩溃源代码。

so:

当测试工程师测试应用程序时,我们如何找出源代码功能或行

在决赛中,尽力而为,我找到了两种方法来脱机崩溃应用程序:


FIRST ,我们可以使用位于{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:QtQt5.9.0Toolsmingw530_32bin>addr2line.exe -f -e e:qtuntitled5.exe 0040187C 004017AB 004016BC 00403B45
_ZN4testC2Ev
E:qtuntitled5/test.cpp:6
_ZN10MainWindowC2EP7QWidget
E:qtuntitled5/mainwindow.cpp:12
_Z5qMainiPPc
E:qtuntitled5/main.cpp:35
WinMain@16
c:Usersqtworkqtqtbasesrcwinmain/qtmain_win.cpp:104


第二,使用fressndl,Dr.Mingw博士的一部分。我认为这是一个很好的工具。GitHub项目链接:在此处输入链接说明

adn它也有一个样本,您不会错过它。它具有这样的崩溃报告:

Error occurred on Wednesday, September 6, 2017 at 14:25:57.
untitled5.exe caused an Access Violation at location 008F4B21 in module Qt5Widgetsd.dll Reading from location 00000000.
Registers:
eax=008f4b1e ebx=005ff278 ecx=00000000 edx=184b0048 esi=005fdf48 edi=755e16dd
eip=008f4b21 esp=0028fd20 ebp=0028fd68 iopl=0         nv up ei pl nz na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010202
AddrPC   Params
008F4B21 00000001 00000000 00000001  Qt5Widgetsd.dll!hide  [c:/Users/qt/work/qt/qtbase/src/widgets/kernel/qwidget.cpp @ 8037]
00401890 00000001 00000000 00050900  untitled5.exe! ??   [E:/qt/untitled5/test.cpp @ 6]
     4: test::test()
     5: {
>    6:     test3 *p = new test3;
     7: }
     8: 
004017BF 00000000 184CED38 00050900  untitled5.exe! ??   [E:/qt/untitled5/mainwindow.cpp @ 10]
     8: {
     9:     ui->setupUi(this);
>   10:     test *t = new test;
    11: }
    12: 
004016D2 00000001 184CED38 00673108  untitled5.exe!qMain  [E:/qt/untitled5/main.cpp @ 29]
    27: 
    28:     QApplication a(argc, argv);
>   29:     MainWindow w;
    30:     w.show();
    31: 

最新更新