gdb调试相关指令

the GNU Project debugger

1编译

gcc *.c -o app -g // 生成的可执行app中带了调试信息(-g)
后期发布程序时不需要 -g参数

2打开gdb,设置相关断点

启动gdb,并且分屏显示源代码:
$gdb -tui
打开gdb
gdb app
查看源代码
l(或list,默认显示的包含main函数的文件),或 l a.c:20 查看a.c文件20行的代码,
或 l a.c:sort 查看a.c文件中的sort()函数的代码 ,然后 l 继续显示,回车是执行上次的指令
打断点
在打开的文件中,b (或break) 20,在该文件20行打断点,可继续打其他行断点。
for循环的条件断点:b 15 if i==100
查看断点信息
i (或info) b 。包含断点Num和状态,位置。
执行代码
start。只执行1步就停住。

r (或run):运行,前提是先要把断点设置好

n(或next) 下一步。

c(或continue) 运行至断点,没断点就运行至结束

s(或step) 进入函数体内部,不能进入就单步,可看见函数参数值,l 可看函数代码,b可增加断点。

p(或print)+变量,查看对应参数变量值,如p array[1]

ptype+变量,查看对应变量的类型

display+变量,追踪打印变量值,可在for循环配合单步执行使用。取消追踪 undisplay+Num,Num可通过 i display查看追踪变量的Num值。

u :退出当前循环体(如跳出for循环)

finish:跳出当前函数,配合s指令使用。需要去掉当前函数里的所有断点才能跳出去,否则会等该函数执行完。

delete :删除所有断点

d(或delete)+Num,根据Num删除断点

set var +变量=10;设置变量值然后继续运行程序一步。

quit:退出gdb。
调试多线程
gdb只能跟踪一个进程,在fork()函数处中断,设置跟踪目标
set follow-fork-mode child 设置gdb在fork()函数之后跟踪子进程
set follow-fork-mode parent 设置跟踪父进程
不做设置的话默认跟踪父进程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值