用GDB调试程序

转一下,方便自己查询

http://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F&variant=zh-cn


常用的使用命令

1)使用GCC编译时加参数 –g        例:gcc tmp01.c –o tmp01 -g

2)gdb tmp01

3)(gdb) l             :      查看载入的文件(list)

4)(gdb) b 6        :      在第6行处设置断点

5)(gdb) info b    :      查看设置的断点情况

6)(gdb) r            :      开始运行程序,+行号可以从指定行开始运行

7)(gdb) p n        :      查看变量的值

8)(gdb) watch n :      设置观察点(变量)

9)(gdb) n           :      单步运行(next)

10)  (gdb) c          :      程度继续运行(continue)



GDB中常见断点设置与删除指令


break+设置断点的行号


用于在程序中对应行设置断点


tbreak+行号或函数名


设置临时断点,到达后被自动删除


break+filename+行号


用于在指定文件的对应行设置断点


break+<0x..>


用于在内存某一位置处暂停


break+行号+if+条件


用于设置条件断点,在循环中使用非常方便


info breakpoints/watchpoints


查看断点/观察点的情况


clear+要清除断点的行号


用于清除对应行的断点


delete+要清除断点的编号


用于清除断点和自动显示的表达式的命令。与clear的不同之处:clear要给出断点的行号,delete要给出断点的编号。用clear命令清除断点时GDB会给出提示,而用delete清除断点时GDB不会给出任何提示。


disable+断点编号


让所设断点暂时失效。如果要让多个编号处的断点失效可将编号之间用空格隔开。


enable+断点编号


与disable相反


awatch+变量


设置一个观察点,当变量被读出或写入时程序被暂停


rwatch+变量


设置一个观察点,当变量被程序读时,程序被暂停


watch


同awatch


GDB中数据相关指令


display+表达式


该命令用于显示表达式的值,使用了该命令后,每当程序运行到断点处都会显示表达式的值


info display


用于显示当前所有要显示值的表达式的有关情况


delete+display 编号


用于删除一个要显示价目表的表达工,调用这个命令删除一个表达式后,被删除的表达式将不被显示


disable+display 编号


使一个要显示的表达式暂时无效


enable+display 编号


disable display 的反操作


undisplay+display 编号


用于结束某个表达式值的显示


whatis+变量


显示某个表达式的数据类型


print(p)+变量或表达式


用于打印变量或表达式的值


set+变量=变量值


改变程序中一个变量的值


GDB调试运行环境相关命令


set args


设置运行参数


show args


参看运行参数


set width+数目


设置GDB的行宽


cd+工作目录


切换工作目录


run


程序开始执行


step(s)


进入式(会进入到所调用的子函数中)单步执行


next(n)


非进入式(不会进入到时所调用的子函数中)单步执行


finish


一直运行到函数返回


until+行数


运行到函数某一行


continue(c)


执行到下一断点或程序结束


return <返回值>


改变程序流程,直接结束当前函数,并将指定值返回


call+函数


在当前位置执行所要运行的函数


GDB中堆栈相关命令


backtrace/bt


用来打印栈侦指针,也可以在该命令后加上要打印的栈侦指针的个数


frame


用于打印栈侦


info reg


查看寄存器的使用情况


info stack


查看堆栈情况


up


跳到上一层函数


down


与up相对


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值