首页 > 代码库 > 再探gdb常用命令
再探gdb常用命令
前面已经有了一篇对gdb常用命令的总结,见 http://blog.csdn.net/u011848617/article/details/12838875
这里对目前学过的gdb命令进行了较完整的整理。
1、使用gdb调试代码,就要在编译时添加-g选项。
2、gdb -q —————— 启动gdb时不输出版权说明
3、gdb打开文件:
(1)gdb filename;
(2)先输入gdb,然后在gdb命令行输入file filename。
4、gdb选项(gdb中好多命令都有自己的简写字母):
不输入直接回车 ------------ 重复执行上一条命令
q(quit) ------------------- 退出gdb
file filename ------------- 打开文件filename
l(list) ------------------- 显示10行代码,若再次运行则显示接下来10行代码
list 5,10 ---------------- 显示第5到10行的代码
list test.c:5,10 -------- 显示源文件test.c中第5到10行的代码
list get_sum -------------- 显示get_sum函数周围的代码
list test.c:get_sum ------- 显示源文件test.c中get_sum函数周围的代码
shell XXX ----------------- 运行shell命令XXX
search/forward str -------- 从当前行向前查找第一个匹配的字符串str
reverse-search str -------- 从当前行向后查找第一个匹配的字符串str
r(run) -------------------- 运行程序
help XXX ------------------ 查看命令XXX的使用方法
help all ------------------ 查看所有命令的使用方法
whatis 变量或表达式 ------- 显示变量或表达式的数据类型
set variable 变量=值 ------ 给变量赋值
kill ---------------------- 结束当前程序的调试
continue ------------------ 让程序继续执行,直到下一个断点或者运行完为止
n(next) ------------------- 继续执行下一条语句,遇到函数把函数当作一条语句来执行
step ---------------------- 继续执行下一条代码,遇到函数会跟踪进入函数
nexti/stepi --------------- 单步执行一条机器指令
watch 变量名 -------------- 设置变量监测点
bt(backtrace) ------------- 显示程序当前运行位置和对当前位置的栈跟踪
display 变量或表达式 ------ 添加观察点,以后每次运行命令都会显示对应变量或表达式的值
undisplay num ------------- num为设置的display编号,可以用info display获取,不能用变量名
5、设置断点:
b(break) 行号 ----------------------- 在第n行设置断点
break fun_name ---------------------- 为函数fun_name设置断点
break 行号或函数名 if 条件 ---------- 程序在运行中,当条件满足时,在某行中断暂停执行
watch 条件表达式 -------------------- 程序运行中,满足条件时暂停执行,不需要写行号
info breakpoints -------------------- 查看当前所有的断点
disable 断点编号 -------------------- 使断点n失效
enable 断点编号 --------------------- 使断点n有效
clear ------------------------------- 删除本行断点(如果存在的话)
clear 行号 -------------------------- 删除此行断点
clear 函数名 ------------------------ 删除该函数的断点
delete 断点编号 --------------------- 删除指定编号的断点
6、print命令:
print XXX ------------------------------- 打印输出XXX的值
print 变量 = 值 ------------------------- 对变量赋值
print 表达式@要打印值的个数n ------------ 打印以表达式值开始的n个数
7、watch和display设置监测点的区别:
watch监测只有当监测的变量值发生变化时才显示变量,而且旧值和新值都会显示。
display监测每一次运行命令都会显示变量的值,只会显示变量的最新值。