Answers:
info locals
-查看所有局部变量;列表-查看源代码; rbreak-中断匹配正则表达式的函数。
set print object on
用于多态元素,set print elements 0
是我经常使用的两个命令。很有用。
t a a bt
(意思是thread apply all backtrace
)。可以与(几乎)所有其他命令一起使用。尤其有用bt full
。
使用文本用户界面启动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之外,还可以在使用一段时间后通过键入“ wh”切换到文本模式。
C-x a
。您还可以在ui模式下使用C-x 1
和切换视图,C-x 2
以查看装配(如果需要)。
例如,在stl-views.gdb中定义的宏
-command=<file with gdb commands>
在启动gdb时使用该选项。与相同-x <command file>
。此命令文件可以包含gdb命令(例如断点,选项等)。在需要使用gdb进行连续调试运行来放置特定可执行文件时很有用。
-iex
选项在gdb命令行上添加单个命令。
编写gdb脚本是个不错的技巧,除了我喜欢设置调度程序锁定为开/关,以防止在您进入一个线程时其他线程运行。
set scheduler-locking on
GDB里
不要使用选项-tui启动gdb来查看包含突出显示程序中执行代码行位置的屏幕的子进程,而是使用Cx o和Cx a跳入或跳出该功能。如果您正在使用该功能以及暂时不使用它的功能,这将很有用,因此您可以使用向上箭头获取上一个命令。
focus cmd
以便使用上/下箭头。您可以使用切换回去focus src
。
要调试STL,请将内容添加到.gdbinit,请按照以下说明进行操作: