在运行像gdb或dbx这样的调试器时,是否可以发布最棘手和最有用的命令。
答案 0 :(得分:132)
答案 1 :(得分:99)
使用文本用户界面启动gdb
gdb -tui
答案 2 :(得分:42)
从gdb 7.0开始,有reversible 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.
答案 3 :(得分:20)
除了使用“-tui”参数启动GDB,您还可以在一段时间后使用键入“wh”切换到文本模式。
答案 4 :(得分:14)
thread apply all bt
或thread apply all print $pc
:快速查找所有主题的内容。
答案 5 :(得分:6)
答案 6 :(得分:6)
在启动gdb时使用-command=<file with gdb commands>
选项。与-x <command file>
相同。此命令文件可以包含断点,选项等gdb命令。如果需要使用gdb进行连续调试运行,则需要使用特定的可执行文件。
答案 7 :(得分:5)
脚本gdb是一个很好的技巧,除了我喜欢的 设置调度程序锁定打开/关闭以防止在您单步执行时运行其他线程。
答案 8 :(得分:4)
不是使用选项-tui启动gdb来查看包含一个屏幕的子进程,该进程突出显示执行代码行在程序中的位置,而是使用C-x o和C-x a跳入和跳出此功能。如果您正在使用该功能以及暂时不使用该功能,这将非常有用,因此您可以使用向上箭头来获取上一个命令。
答案 9 :(得分:3)
info threads 列出所有活动线程,f(#) - &gt; #要切换到的#thread编号
有时我使用gdb从十六进制转换为十进制或二进制,它非常方便而不是打开一个计算器
答案 10 :(得分:2)
这可能很有用,我相信它可以改进,但欢迎帮助:
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
答案 11 :(得分:2)
要调试STL,请将内容添加到.gdbinit,请按照以下说明操作: