何为GDB?!
GDB调试你的代码(设置断点,单步执行等)
使用:
首先要调试c/c++程序,首先在编译器时.我们首先要把调试信息加到可执行文件中.
使用编译器(gcc /g++)参数-g 可以做到这一点
启动退出:
启动gdb :gdb 可执行文件
退出gdb:quit
启动程序:
run (如果有断点,停在第一个断点处)
start:程序向下执行一行
设置命令行参数
sets args 可指定运行时参数
show args 查看运行参数
显示源代码:
list命令打印程序的源代码.默认打印10行
- list linenum: 打印第linenum行上下文内容(默认10行,所以上五行,下五行)
- list function:显示函数名为function的函数的源程序
- list: 显示当前行后面的源程序
- list -:显示当前行前面的源程序
(也可以自己定制显示规范)---默认几行
- set listsize count:设置一次显示源代码的行数
- show listsize:查看当前listsize的设置
断点操作(每个断点都有自己专属的序列号)
1)break设置断点,可以简写为b
- b 10 设置断点在第十行
- b func设置断点,在func函数入口处
2)多文件设置断点
b filename:linenum(function)---在原文件filename的linenum行/函数处停住
b class::function 在类class的function函数入口处停止
3)查询所有断点
- info b
4)条件断点(为断点设置条件)
b test.c:8 if val==5
维护断点
- delete [range] 删除指定断点,其简写命令为d
- 不指定断点 表示删除所有的断点
- disable [range] 使指定断点无效,简写命令是dis(还存在,只是无效)
- enable [range] 使断点有效,简写ena
调试代码
- next 单步跟踪 一条语句执行 可简写n
- step 单步跟踪 函数调用进入被调用函数体内 简写s
- finish 退出进入的函数
- until 在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环 u
- continue 继续运行程序 ,停在下一个断点 c
数据查看
print 打印变量,字符串,表达式的值, p
p count 打印count的值
自动显示
当程序停住时,或者单步跟踪,这些变量会自动显示.
- display 变量名
- info display 查看display设置的自动显示的信息
- undisplay num (编号)
- delete display dnums… -- 删除自动显示,dnums意为所设置好了的自动显式的编号。如果要同时删除几个,编号可以用空格分隔,如果要删除一个范围内的编号,可以用减号表示(如:2-5)
- disable display dnums
- enable display dnums
查看修改变量的值
1)ptype width --查看变量width的类型
type=double
2)p width --打印变量width的值
3)set var width=47 // 将变量var值设置为47
在你改变程序变量取值时,最好都使用set var格式的GDB命令
本文含有隐藏内容,请 开通VIP 后查看