再探gdb经常使用命令

Posted yxysuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再探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监測每一次执行命令都会显示变量的值,仅仅会显示变量的最新值。















































以上是关于再探gdb经常使用命令的主要内容,如果未能解决你的问题,请参考以下文章

再探共享存储

代码调试篇:如何编写 gdb 自定义命令

代码调试篇:如何编写 gdb 自定义命令

gdb调试命令的使用及总结

[工具]GDB的命令和使用

gdb命令使用