Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248711
  • 博文数量: 44
  • 博客积分: 1052
  • 博客等级: 少尉
  • 技术积分: 742
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 16:51
文章分类

全部博文(44)

文章存档

2013年(7)

2012年(14)

2011年(23)

分类: LINUX

2011-03-06 20:48:04

     下面是以前学习中记录的gdb笔记,并不完整,只记录到了我使用过的命令。如果以后学到gdb中新的命令,我会更新该文章。 (这里的基本是在电子书”linux c 一站式学习6.14“中看到的)

1: gcc -g file.c
   加上 -g 选项, 生成的可执行文件才能用gdb进行源码级调试

2: 命令help, 可以查看命令类别.
   再help 类别, 可以查看类别下有哪些命令.

3: list 命令从第一行开始列出源代码, 一次列出10行
   直接敲回车表示重复上一命令.
   list命令也可以写出l.
   list 函数名  : 列出函数的源代码.

4: start命令 开始执行程序, 并在main函数中变量定义后的第一条语句出停住.
   列出的语句为将要执行的语句.

5: 用next(n) 命令一条一条的执行语句.

6: 用step(s)命令执行一条语句, 若有函数则进入函数.

7: backtrace(bt)命令可以查看函数调用的帧栈.
   (gdb) backtrace
   #0  add_range (low=1, high=10) at newt.c:6        
   #1  0x000000000040053b in main () at newt.c:14

   可以函数add_range由函数main调用, 且传递的参数low=1, high=10.
   0表示add_range的帧栈号, 1表示mian的帧栈号.

8: info(i)命令,  info locals 可以查看局部变量.
   接7中的例子, 要想查看main函数的局部变量, 要先用frame(f)命令, 选择1号帧栈, 然后用info查看
   frame 1
   info locals

9: print(p) 命令打印变量或表达式的值,  因此可以用于修改变量的值.

10: finish命令, 让程序一直运行至从当前函数返回为止.

11: set var 变量名=expression     修改变量的值.

12: quit(q) 命令退出.

13: display命令,  display 变量,  使得在每次执行一步后就自动显示变量的值.
    undisplay命令, 取消跟踪显示.

14: break(b)命令, 设置断点, 可以根据行号来设置, 也可以根据函数名来设置.
    break ... if ...   当条件满足时才断点.

15: continue(c)命令, 表示连续运行, 而非单步运行.

16: info breakpoints可以查看断点信息, 每个断点都有一个编号.
    可以用编号来删除指定断点, "delete breakpoints 编号".
    有时不必删除断点, 只需禁用. "disable breakpoints 编号".
    用"enable 编号"来启动相应断点.

17: run(r)命令, 从程序头开始运行.

18: x命令, 打印指定存储单元的内容.  x /7b input, 表示打印input单元的内容, b表示每字节一组
    7表示打印7组.

19: watch, 设置观察点.  断点是程序执行到某一代码行时中断, 观察点是当程序访问某个存储单元
    时中断.
    同样可以用info watchpoints 来查看设置了哪些观察点.

20: disassemble用于反汇编当前函数或指定函数.

21: si命令可以一条指令一条指令的调试. (step 是一行代码, 一行代码的调试).

22: info registers 可以显示所有寄存器的值.
    要显示某一个寄存器的值可用 p $esp.  寄存器名字前要加$.
阅读(1536) | 评论(0) | 转发(0) |
0

上一篇:apue: 7 Process Environment

下一篇:gcc note

给主人留下些什么吧!~~