秒懂Linux之gdb调试

fe594ea5bf754ddbb223a54d8fb1e7bc.gif

目录

一. 前情提要

二. 相关命令

2.1 l 行号/函数名

2.2 r

2.3 b

2.4 info break

2.5 d

2.6 disable/enable

2.7 n

2.8 s

2.9 p

2.10 display/undisplay

2.11 c

2.12 bt

2.13 finish

2.14 untill

2.15 set var

三. 总结


一. 前情提要

Linux gcc/g++出来的二进制程序,默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

二. 相关命令

2.1 l 行号/函数名

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
因为在gdb里回车能自动记录最近一条指令,想看完整代码接下来不断回车即可~

2.2 r

r或run:运行程序。

2.3 b

break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点

2.4 info break

info break :查看断点信息。

2.5 d

delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点

2.6 disable/enable

disable breakpoints:禁用断点
enable breakpoints:启用断点

2.7 n

n 或 next:单条执行(把每一行当作一个整体,包括函数)

2.8 s

s或step:进入函数调用

2.9 p

p 变量:打印变量内容或地址

2.10 display/undisplay

display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪

2.11 c

continue(或c):从一个断点运行到另一个断点

2.12 bt

breaktrace(或bt):查看各级函数调用及参数

2.13 finish

finish:执行到当前函数返回,然后挺下来等待命令 

2.14 untill

until X行号:跳至X行(可用来跳出循环等等)

2.15 set var

set var:修改变量的值
这个比较少用,一般用来该变判断的反面来测试程序是否能运行下去,就不用跑到源代码改完再回来测了。

三. 总结

其实这些指令并不是重点,重点是我们需要学会有调试的思维,通过这些指令来帮我们找出问题,划定范围,然后不断缩小范围,最后找到问题。这个过程才是最重要的~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值