您可以在运行 gdb 或 dbx 等调试器时发布最棘手和最有用的命令吗?

有帮助吗?

解决方案

  1. 回溯已满:使用局部变量完成回溯
  2. 向上, 向下, 框架:在帧之间移动
  3. 手表:当满足一定条件时暂停进程
  4. 设置打印漂亮:打印出格式漂亮的 C 源代码
  5. 设置登录:记录调试会话以向其他人展示支持
  6. 设置打印数组:漂亮的阵列打印
  7. 结束:继续直到函数结束
  8. 使能够禁用:启用/禁用断点
  9. 中断:断一次,然后去掉断点
  10. 在哪里:当前正在执行的行号
  11. 信息当地人:查看所有局部变量
  12. 信息参数:查看所有函数参数
  13. 列表:查看源代码
  14. 中断:在匹配正则表达式的函数上中断

其他提示

启动GDB与文本用户界面

gdb -tui

在gdb 7.0开始,有可逆调试,所以你的新宠命令是:

* 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的PARAM还可以使用通过键入“WH”切换到文本模式一段时间后。

thread apply all btthread apply all print $pc:对于快速找出什么的线程全都做

例如在 STL-views.gdb

使用-command=<file with gdb commands>选项而发射了GDB。同-x <command file>。该命令文件可以包含像断点,选项等。有用的情况下,gdb命令一个特定可执行需要通过连续调试放用gdb运行。

脚本GDB是一个很好的特技,比我喜欢其他 集调度锁开启/关闭,以防止其他线程的运行,当你在一个步进。

而不是启动GDB的选项-tui看到,包含一个屏幕,突出显示了代码执行行是在你的程序,用C-X O和C-X的跳跃进出此功能的一个子进程的

。如果您使用的功能,哪些暂时不使用它,所以你可以使用向上箭头得到前面的命令,这非常有用。

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

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

    • p/d 0x10 -> 给出 0x10 的十进制等值
    • p/t 0x10 -> 0x10 的二进制等价物
    • p/x 256 -> 相当于 256 的十六进制

这可能是有用的,我相信它可以改善虽然,帮助欢迎:

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

要调试STL,将内容添加到.gdbinit,遵循以下说明:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top