gdbdebugging器最棘手/有用的命令
你可以发布你最棘手的和有用的命令,而你运行像gdb或dbxdebugging器。
- 回溯完整 :使用局部variables完成回溯
- 向上 , 向下 , 框架 :移动框架
- 注意 :在满足特定条件时暂停过程
- 设置打印漂亮 :打印出精美格式的C源代码
- 设置日志logging :loggingdebugging会话以向其他人显示支持
- 设置打印arrays :漂亮arrays打印
- 完成 :继续直到function结束
- 启用和禁用 :启用/禁用断点
- tbreak :暂停一次,然后删除断点
- 其中 :当前正在执行的行号
- info locals :查看所有本地variables
- info args :查看所有的函数参数
- 列表 :查看源代码
- rbreak :匹配正则expression式的函数中断
用文本用户界面启动gdb
gdb -tui
从gdb 7.0开始,有可逆的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.
不用用“-tui”参数启动GDB,你也可以通过input“wh”在一段时间后切换到文本模式。
thread apply all bt
或thread apply all print $pc
:快速找出所有线程正在做什么。
例如在stl-views.gdb中定义的macros
在启动gdb时使用-command=<file with gdb commands>
选项。 与-x <command file>
。 这个命令文件可以包含gdb命令,比如断点,选项等等。在需要通过使用gdb进行连续的debugging运行的情况下有用。
脚本GDB是一个很好的窍门,除此之外,我喜欢设置调度程序locking开/关,以防止其他线程运行时,你正在步入一个。
而不是使用-tui选项启动gdb以查看包含屏幕的subprocess,该进程突出显示执行代码在程序中的哪个位置,使用Cx o和Cx a跳入和退出此function。 如果您正在使用该function以及暂时不使用该function,那么此function非常有用,因此您可以使用向上箭头来获取以前的命令。
- 使用.gdbinit (启动文件,您可以在其中编写macros并从gdb调用)。 将.gdbinit放在您的主目录中,以便每次加载gdb时都会将其拾取
-
info线程列出所有活动线程,并且f(#) – >#线程号码要切换到
-
有时我使用gdb从hex转换为十进制或二进制,非常方便,而不是打开一个计算器
- p / d 0x10 – >给出0x10的十进制等值
- p / t 0x10 – > 0x10的二进制等值
- p / x 256 – > hex相当于256
这可能是有用的,我相信它可以改善,但欢迎:
define mallocinfo set $__f = fopen("/dev/tty", "w") call malloc_info(0, $__f) call fclose($__f)
要debuggingSTL,请将内容添加到.gdbinit,请遵循以下说明: