gdb 调试器最棘手/有用的命令[关闭]
题
您可以在运行 gdb 或 dbx 等调试器时发布最棘手和最有用的命令吗?
解决方案
- 回溯已满:使用局部变量完成回溯
- 向上, 向下, 框架:在帧之间移动
- 手表:当满足一定条件时暂停进程
- 设置打印漂亮:打印出格式漂亮的 C 源代码
- 设置登录:记录调试会话以向其他人展示支持
- 设置打印数组:漂亮的阵列打印
- 结束:继续直到函数结束
- 使能够 和 禁用:启用/禁用断点
- 中断:断一次,然后去掉断点
- 在哪里:当前正在执行的行号
- 信息当地人:查看所有局部变量
- 信息参数:查看所有函数参数
- 列表:查看源代码
- 中断:在匹配正则表达式的函数上中断
其他提示
启动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 bt
或thread 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
不隶属于 StackOverflow