paip.c++程序崩溃的汇编级别调试-打印堆栈-gcc gdb
paip.c++程序崩溃的汇编级别调试-打印堆栈-gcc gdb
作者Attilax , EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
c++程序崩溃直接出来的是个汇编级的指令以及堆栈,无法直接看到c++源码的哪一行出问题了..
要是VC编译的程序崩溃时,取得DMP,然后配合pdb、源代码来分析问题是常用做法
要是GCC编译的,这个方法就不能使用兰..gcc编译根本不会生成pdb文件的...
以下分为有源码以及没有源码两种情况来进行崩溃时的调试..
有源码的情况哈,比较简单的..崩溃后查看堆栈就ok.. qt>debug bar>right>>view >stack..
没有源码的调试就比较复杂了..
1.加-ggdb3 参数,让gcc生成的exe文件加入调试信息..gcc不会单独生成类似的.pdb文件.
//
D:\Qt\Qt5.1.1\5.1.1\mingw48_32\mkspecs\win32-g++\qmake.conf
line28
QMAKE_CFLAGS = -pipe -fno-keep-inline-dllexport -w
2.exe文件复制到gdb目录哈..
/
不个gdb复制出来三不能使用..
D:\Qt\Qt5.1.1\Tools\mingw48_32\bin
3.gdb *.exe ,运行到崩溃..
4. backtrace 2/3 ,打印堆栈,明确指出c++源文件所在的行...
参考:
GCC编译选项 - 旅途 - C++博客.htm
用GDB调试 GCC 程序 - 猪猪乐园 - 博客频道 - CSDN.NET.htm
作者Attilax , EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
c++程序崩溃直接出来的是个汇编级的指令以及堆栈,无法直接看到c++源码的哪一行出问题了..
要是VC编译的程序崩溃时,取得DMP,然后配合pdb、源代码来分析问题是常用做法
要是GCC编译的,这个方法就不能使用兰..gcc编译根本不会生成pdb文件的...
以下分为有源码以及没有源码两种情况来进行崩溃时的调试..
有源码的情况哈,比较简单的..崩溃后查看堆栈就ok.. qt>debug bar>right>>view >stack..
没有源码的调试就比较复杂了..
1.加-ggdb3 参数,让gcc生成的exe文件加入调试信息..gcc不会单独生成类似的.pdb文件.
//
D:\Qt\Qt5.1.1\5.1.1\mingw48_32\mkspecs\win32-g++\qmake.conf
line28
QMAKE_CFLAGS = -pipe -fno-keep-inline-dllexport -w
2.exe文件复制到gdb目录哈..
/
不个gdb复制出来三不能使用..
D:\Qt\Qt5.1.1\Tools\mingw48_32\bin
3.gdb *.exe ,运行到崩溃..
4. backtrace 2/3 ,打印堆栈,明确指出c++源文件所在的行...
参考:
GCC编译选项 - 旅途 - C++博客.htm
用GDB调试 GCC 程序 - 猪猪乐园 - 博客频道 - CSDN.NET.htm