gdbdebugging器最棘手/有用的命令

你可以发布你最棘手的和有用的命令,而你运行像gdb或dbxdebugging器。

  1. 回溯完整 :使用局部variables完成回溯
  2. 向上向下框架 :移动框架
  3. 注意 :在满足特定条件时暂停过程
  4. 设置打印漂亮 :打印出精美格式的C源代码
  5. 设置日志logging :loggingdebugging会话以向其他人显示支持
  6. 设置打印arrays :漂亮arrays打印
  7. 完成 :继续直到function结束
  8. 启用禁用 :启用/禁用断点
  9. tbreak :暂停一次,然后删除断点
  10. 其中 :当前正在执行的行号
  11. info locals :查看所有本地variables
  12. info args :查看所有的函数参数
  13. 列表 :查看源代码
  14. rbreak :匹配正则expression式的函数中断

用文本用户界面启动gdb

 gdb -tui 

从gdb 7.0开始,有可逆的debugging ,所以你最喜欢的命令是:

 * reverse-continue ('rc') -- Continue program being debugged but run it in reverse * reverse-finish -- Execute backward until just before the selected stack frame is called * reverse-next ('rn') -- Step program backward, proceeding through subroutine calls. * reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines. * reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line * reverse-stepi -- Step backward exactly one instruction * set exec-direction (forward/reverse) -- Set direction of execution. 

不用用“-tui”参数启动GDB,你也可以通过input“wh”在一段时间后切换到文本模式。

thread apply all btthread apply all print $pc :快速找出所有线程正在做什么。

例如在stl-views.gdb中定义的macros

在启动gdb时使用-command=<file with gdb commands>选项。 与-x <command file> 。 这个命令文件可以包含gdb命令,比如断点,选项等等。在需要通过使用gdb进行连续的debugging运行的情况下有用。

脚本GDB是一个很好的窍门,除此之外,我喜欢设置调度程序locking开/关,以防止其他线程运行时,你正在步入一个。

而不是使用-tui选项启动gdb以查看包含屏幕的subprocess,该进程突出显示执行代码在程序中的哪个位置,使用Cx o和Cx a跳入和退出此function。 如果您正在使用该function以及暂时不使用该function,那么此function非常有用,因此您可以使用向上箭头来获取以前的命令。

  • 使用.gdbinit (启动文件,您可以在其中编写macros并从gdb调用)。 将.gdbinit放在您的主目录中,以便每次加载gdb时都会将其拾取
  • info线程列出所有活动线程,并且f(#) – >#线程号码要切换到

  • 有时我使用gdb从hex转换为十进制或二进制,非常方便,而不是打开一个计算器

    • p / d 0x10 – >给出0x10的十进制等值
    • p / t 0x10 – > 0x10的二进制等值
    • p / x 256 – > hex相当于256

这可能是有用的,我相信它可以改善,但欢迎:

 define mallocinfo set $__f = fopen("/dev/tty", "w") call malloc_info(0, $__f) call fclose($__f) 

要debuggingSTL,请将内容添加到.gdbinit,请遵循以下说明:

http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF