Linux下用GDB调试程序的基本方法

(1)调试器GDB的基本使用方法 https://www.cnblogs.com/arnoldlu/p/9633254.html

(2)Linux中用gdb 查看代码堆栈的信息https://www.cnblogs.com/chengliangsheng/p/3597010.html

 

 

GDB调试大概有三种方式:

(1)调试已经生成好的可执行文件

gdb 可执行文件

注意编译的的时候需要g++ 后面加上-g选项,才能把调试信息添加到可执行文件中

如果是CMakeList文件,则需要加上

SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

 

(2)调试core文件

gdb  可执行文件 core文件

注意编译的的时候需要g++ 后面加上-g选项,才能把调试信息添加到可执行文件中

如果是CMakeList文件,则需要加上

SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

 

(3)在线调试运行中的程序‘

可以借助指令 pidod  程序名

1) gdb attach PID
2) gdb 文件名 PID
3) gdb -p PID

注意,当开始调试的时候,原本正在运行的程序会停下,当调试完成后,如果想令当前程序进行执行,消除调试操作对它的影响,需手动将 GDB 调试器与程序分离,分离过程分为 2 步:

  1. )执行 detach 指令,使 GDB 调试器和程序分离;
  2. )执行 quit(或 q)指令,退出 GDB 调试。
     

 

r重新运行程序

bt查看堆栈

f查看当前堆栈层,刚调试开始时,堆栈都处于最底层

up把当前堆栈往上移动一层

down把当前堆栈往下移动一层

l查看当前堆栈层源代码

p 变量: 打印当前堆栈层变量的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值