paip.c++程序崩溃的汇编级别调试-打印堆栈-gcc gdb

本文介绍如何在GCC编译的C++程序崩溃时进行汇编级调试,包括如何通过添加-ggdb3参数生成包含调试信息的可执行文件,使用gdb进行崩溃后堆栈跟踪分析,以及如何在没有源码的情况下通过gdb打印堆栈追踪获取C++源文件行号。此外,文章还提供了实际操作步骤和相关链接,帮助开发者快速定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

paip.c++程序崩溃的汇编级别调试-打印堆栈-gcc gdb


作者Attilax ,  EMAIL:1466519819@qq.com 
来源:attilax的专栏
地址:http://blog.youkuaiyun.com/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 程序 - 猪猪乐园 - 博客频道 - youkuaiyun.com.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值