基本知识:
1:如果用GDB调试的话编译的时候加上-g 选项 不然调试的时候list不出 源代码。
2:break 设置断点
3:程序run之前的设置
3: 工作目录, 输入输出 cd x进入, pwd 查看,
4: clear 清除断点/
5:enable·[break][point] 启动断点
6:利用command命令来设置断点的运行条件。
例:break foo if x>0 //一旦在foo函数中 下x>0
commands
printf “ x is %d\n ” ,x /打印x值
continue
end
7:condition<bnum><expression> // 修改断点号为 bnum 的停止条件为 expression
condition<bnum>//清除断点号为 bnum 的停止条件。
ignore<bnum><count>///表示忽略断点号为 bnum 的停止条件 count 次。
8:next<count>
单步跟踪,如果有函数调用,他不会进入函数。
step<count>
单步跟踪,如果有函数调用,他会进入该函数
set step-mode on
打开 step-mode 模式,于是,在进行单步跟踪时,程序不会因为没有 debug
信息而不停住。这个参数很有利于查看机器码。
set step-mode off
运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值
及参数值信息。
finish
运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值
及参数值信心。
until 或 u
当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序知道退出循
环体。
9: bt 打印栈信息
10: 搜素源代码
f orward -search<regexp>
search<regexp>
向前面搜索。
reverse-search<regexp>
全部搜索。
11: info line 可以查看内存信息
12:查看数组 利用 // 地址 @ 查看长度
13:x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
14:jump<linespece》 执行下一语句的点
jump<laddress> .......................地址
15:
这里的 <address> 是代码行的内存
调试技巧:
1: 在调试时按照自己的思路对变量值进行修改
如:
(gdb) print x=4