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 onGDB里
不要使用选项-tui启动gdb来查看包含突出显示程序中执行代码行位置的屏幕的子进程,而是使用Cx o和Cx a跳入或跳出该功能。如果您正在使用该功能以及暂时不使用它的功能,这将很有用,因此您可以使用向上箭头获取上一个命令。
focus cmd以便使用上/下箭头。您可以使用切换回去focus src。
要调试STL,请将内容添加到.gdbinit,请按照以下说明进行操作: