Gdb打印到文件而不是标准输出
我正在运行gdb,并想要检查其中一个不幸的上帝的对象。 它需要很多页面(我有一个24“的显示器侧面翻转!)看到整个事情。为了方便使用,我想gdb打印对象的文件,而不是屏幕,所以我可以打开它在vi,轻松移动,所有gdb的多function性,必须有办法做到这一点,对吧?
您需要启用日志logging。
(gdb) set logging on
你可以告诉它使用哪个文件。
(gdb) set logging file my_god_object.log
你可以检查当前的日志configuration。
(gdb) show logging
我发现你可以通过run
命令将输出从gdbredirect到一个文件:
(gdb) run > outfile
扩展@ qubodup的答案
gdb core.3599 -ex bt -ex quit |& tee backtrace.log
-ex
开关运行一个gdb命令。 所以上面加载核心文件,运行bt
命令,然后quit
命令。 输出被写入到backtrace.log
以及屏幕上。
另一个有用的gdb调用(给所有线程使用局部variables的stacktrace)是
gdb core.3599 -ex 'thread apply all bt full' -ex quit
您可能希望将gdb命令的输出保存到文件中。 有几个命令来控制gdb的日志logging。
set logging on
启用logging。
set logging off
禁用日志logging
set logging file file
更改当前日志文件的名称。 默认的日志文件是gdb.txt。
set logging overwrite [on|off]
默认情况下,gdb将附加到日志文件。 如果您想设置日志logging覆盖日志文件,请设置覆盖。
set logging redirect [on|off]
默认情况下,gdb输出将同时转到terminal和日志文件。 如果您希望输出仅转到日志文件,请设置redirect。
show logging
显示日志设置的当前值。
一个简单的方法来logginggdb到一个文件,同时仍然看到输出(这简化了写命令)是使用tee
:
gdb command |& tee gdb.log