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