我正在运行gdb,想检查那些不幸的上帝对象之一。要查看整个过程,它需要很多页面(并且我有一个24英寸的显示器侧身!)。为了易于使用,我希望gdb将对象打印到文件而不是屏幕上,以便我可以在其中打开它。 vi并轻松地移动。鉴于所有gdb的多功能性,一定有一种方法可以做到,对吗?
我正在运行gdb,想检查那些不幸的上帝对象之一。要查看整个过程,它需要很多页面(并且我有一个24英寸的显示器侧身!)。为了易于使用,我希望gdb将对象打印到文件而不是屏幕上,以便我可以在其中打开它。 vi并轻松地移动。鉴于所有gdb的多功能性,一定有一种方法可以做到,对吗?
Answers:
我发现您可以通过以下run
命令将输出从gdb重定向到文件:
(gdb) run > outfile
扩展@qubodup的答案
gdb core.3599 -ex bt -ex quit |& tee backtrace.log
的-ex
开关运行GDB命令。因此,上面加载了核心文件,先运行bt
命令,然后运行quit
命令。输出被写入backtrace.log
屏幕,也被写入屏幕。
另一个有用的gdb调用(使用来自所有线程的局部变量给stacktrace)是
gdb core.3599 -ex 'thread apply all bt full' -ex quit
gdb -c core.3599 ...
从https://sourceware.org/gdb/onlinedocs/gdb/Logging-Output.html:
您可能需要将gdb命令的输出保存到文件中。有几个命令可以控制gdb的日志记录。
set logging on
启用日志记录。
set logging off
禁用日志记录。
set logging file file
更改当前日志文件的名称。默认日志文件是gdb.txt。
set logging overwrite [on|off]
默认情况下,gdb将追加到日志文件。如果要设置登录以覆盖日志文件,则设置覆盖。
set logging redirect [on|off]
默认情况下,gdb输出将同时到达终端和日志文件。如果只希望输出到日志文件,则设置重定向。
show logging
显示日志记录设置的当前值。
您在这里有多个答案。他们是正确的。我只想添加一条命令,该命令将帮助您立即收集所有输出。当您收集大量回溯时,这真的很有帮助。在进行任何日志记录配置之前,请执行以下操作:
(gdb)set height 0
我在这篇文章上找到了它:https : //askaralikhan.blogspot.com/2016/05/gdb-all-threads-bt-to-file.html?showComment=1584614942454#c4584028195226351332
set logging redirect on
。