GCC调试工具GDB的常用指令

常用指令

  1. 进入调试模式

    1
    gdb 可执行文件
  2. 如果忘了指定调试文件可以使用file指令指定

    1
    (gdb) file 文件名
  3. 使用quit指令退出调试模式 可简写为q

    1
    (gdb) q
  4. 使用start指令开始调试 停在第一行代码处

    1
    (gdb) start
  5. 使用step指令进行单步执行 可简写为s

    1
    (gdb) s   #会进入函数内部
  6. 使用next执行进行单步执行 可简写为n

    1
    (gdb) n  #不会进入函数内部
  7. 汇编级别单步执行(上面ns为c语言级别单步指令)

    1
    2
    (gdb) ni #不进入函数内部
    (gdb) si #会进入函数内部
  8. 使用list指令列出所有源代码 可简写为l

    1
    (gdb) l
  9. 使用break指令设置断点位置 可简写为b

    1
    2
    3
    4
    5
    (gdb) b main #在main函数处打断点
    (gdb) b 10 #在第十行位置打断点
    (gdb) b test:10 #在test文件的第十行位置打断点
    (gdb) b 0x3400a #在0x3400a内存位置打断点
    (gdb) b 10 if i==3 #设置条件断点 i等于3时在第十行位置打断点 适用于循环
  10. 使用delete+断点编号指令删除断点 可简写为d

    1
    (gdb) delete 3 #删除编号为3的断点  清除时GDB不会给出任何提示
  11. 使用 clear+断点行号指令清除断点

    1
    (gdb) clear 3 #清除第三行的断点  清除时GDB会给出提示
  12. 使用 disable/enable + 断点编号 指令冻结或启动断点

    1
    disable 3,4 #冻结编号为3和4的断点 多个断点使用逗号分隔
  13. 使用info break指令查看断点的情况

    1
    (gdb) info break
  14. 使用 tbreak 指令设置临时断点

    1
    (gdb) tbreak 行号/函数名 #设置临时断点,到达后被自动删除
  15. 使用 awatch/watch + 变量 设置变量读写观察点

    1
    2
    (gdb) awatch/watch a #当变量a被读出或写入时程序被暂停 
    (gdb) rwatch a #当变量a被读出时程序被暂停
  16. 使用continue指令运行到断点处 可简写为c

    1
    (gdb) c
  17. 使用print指令打印变量的值 可简写为p

    1
    (gdb) p a #打印变量a的值
  18. 使用x指令打印指定内存地址数据

    1
    (gdb) x /6cb 0x804835c #打印地址0x804835c起始的内存内容,连续6个字节,以字符格式输出。
  19. 使用run指令运行整个程序 可简写为r

    1
    (gdb) r  #如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处
  20. 使用 call 指令直接运行某个函数

    1
    (gdb) call fun #在当前位置执行函数fun
  21. 使用display 指令设置需要跟踪的变量

    1
    (gdb) display a #跟踪变量a 每次断点到该处就显示该变量的值
  22. 使用 info display 显示当前所有跟踪的情况

    1
    (gdb) info display
  23. 使用undisplay+编号 指令取消对变量的跟踪

    1
    (gdb) undisplay 3 #取消对编号为3的跟踪事件
  24. 使用 set+ 变量 指令改变变量的值

    1
    (gdb) set i=3 #临时设置变量i的值为3
  25. 使用 set 指令设置运行时参数

    1
    (gdb) set i=3 #临时这只变量i的值为3
  26. 使用 show 指令查看运行时参数

    1
    (gdb) show i
  27. 使用 finish 指令函数结束

    1
    (gdb) finish
  28. 使用help指令查看指令使用说明

    1
    2
    (gdb) help print #查看print指令的解释说明
    (gdb) help #查看所有指令
  29. 使用info reg指令查看寄存器状态

    1
    (gdb)  info reg
  30. 使用 info stack指令查看堆栈状态

    1
    (gdb) info stack
  31. 运行shell指令

    1
    (gdb) shell ls   #运行shell指令ls。
  32. 其他指令

    1
    2
    3
    4
    5
    6
    7
    (gdb)  path #可设定程序的运行路径。 
    (gdb) show paths #查看程序的运行路径。


    (gdb)  cd   #相当于shell的cd命令。

    (gdb)  pwd  #显示当前的所在目录
  1. 使用回车重复上一条指令

本文为作者原创 转载时请注明出处 谢谢

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%