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