C++ GDB多进程调试

GDB 主要帮助你完成下面四个方面的功能:

  1. 启动程序,可以按照自定义的要求随心所欲的运行程序
  2. 可让被调试的程序在所指定的调置的断点处停住(断点可以是条件表达式)
  3. 当程序被停住时,可以检查此时程序中所发生的事
  4. 可以改变程序,将一个 BUG 产生的影响修正从而测试其他 BUG

调试流程

生成可执行、调试的文件

-g 选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机
器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调
试时必须保证 gdb 能找到源文件。

g++ -g main.cpp -o main

常用命令

启动和退出
gdb main
quit  #也可简写为 q
给程序设置参数/获取设置参数
set args 10 20
show args
帮助
help
查看当前文件代码
list   (从默认位置开始,可简写为 l)
list 行号
list 函数名
查看其他文件代码
list 文件名:行号
list 文件名:函数名
设置显示的行数
set listsize/list 行数
show listsize/list
设置断点
break/b 行号
break/b 函数名
break/b 文件名:行号
break/b 文件名:函数名
查看断点
info break
删除断点
delete 断点编号
设置断点无效
disable 断点编号
设置断点生效
enable 断点编号
设置条件断点
break/b 10 if i==5
运行GDB程序
start    (程序运行在第一行)
run      (程序遇到断点才停下)
继续运行,到下一个断点停
continue/c
向下执行一行代码(不会进入函数体)
next/n
变量操作
print 变量名
ptype 变量名(打印类型)
向下单步调试(遇到函数进入函数体)
step/s  
finish (跳出函数体)
自动变量操作
display 变量名 (自动打印指定变量的值)
info/i display
undisplay 编号
其它操作
set var 变量名=变量值
until    (跳出循环)
多进程

使用 GDB 调试的时候,GDB 默认只能跟踪一个进程,可以在 fork 函数调用之前,通过指令设置 GDB 调试工具跟踪父进程或者是跟踪子进程,默认跟踪父进程。

set follow-fork-mode [parent(默认)| child] #设置调试父进程或者子进程

set detach-on-fork [on | off]  # 设置调试模式:默认为 on,表示调试当前进程的时候
#,其它的进程继续运行,如果为 off,调试当前进程的时候,其它进程被 GDB 挂起。

info inferiors 		#查看调试的进程
inferior id 		#切换当前调试的进程
detach inferiors id #使进程脱离 GDB 调试
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会写代码的孙悟空

赠人玫瑰 手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值