如何将整个GDB会话转储到一个文件中,包括我键入的命令及其输出?
在bash中,我可以使用如何将整个GDB会话转储到一个文件中,包括我键入的命令及其输出?,gdb,Gdb,在bash中,我可以使用script命令,该命令将shell上显示的所有内容转储到文件中,包括: 键入的命令 PS1线 命令的stdout和stderr gdb中的等价物是什么 我试图从GDB内部运行shell脚本,但在我点击return之后,我在shell中,丢失了shell提示符,无法再运行命令。此外,我无法使用ctrl+c或ctrl+\退出。我需要强制杀死/bin/login tty2退出。看看GDB文档。搜索“固定命令序列”。有一种方法可以将GDB命令保存在文件中,并使用source
script
命令,该命令将shell上显示的所有内容转储到文件中,包括:
- 键入的命令
- PS1线
- 命令的stdout和stderr
我试图从GDB内部运行
shell脚本
,但在我点击return之后,我在shell中,丢失了shell提示符,无法再运行命令。此外,我无法使用ctrl+c或ctrl+\退出。我需要强制杀死/bin/login tty2
退出。看看GDB文档。搜索“固定命令序列”。有一种方法可以将GDB命令保存在文件中,并使用source
命令运行它们,您可以在这些脚本中使用一些GDB命令来打印GDB可用的信息(如echo
,output
和printf
)
如果要将该输出记录到文件中,请使用
设置日志文件文件如果要记录GDB的输出,可以使用,例如
如果您想将程序的输出重定向到文件,可以使用重定向,例如
run myprog > mylog.txt
有关更多信息,请参见
使用以下命令创建一个文本文件,即gdbCommands.txt
在我的日志文件上设置日志\nbt 10\nq
bt 10
,表示我们需要回溯的行数(函数调用),在我们的示例中是10行
- 使用以下命令执行gdb,假设核心转储文件core.2345
gdb-x gdbCommands.txt myApp core.2345
- 打开
我的日志文件并检查回溯李>
我已通过以下方式启用日志记录:
set trace-commands on
set pagination off
set logging file $log
并显示日志报告(发送到终端和文件):
如果我打印一个也被记录的变量的值(到终端和文件):
但如果我使用where或“info b”之类的命令,我将记录到该文件中的所有内容是:
+where
+info b
有人知道为什么或者如何修复它吗?你能举一个你尝试过的例子吗?有简短解释的截图?另外,“在shell中,我可以使用脚本提取文本”是什么意思?您是在文件上运行脚本来提取文本,还是使用shell重定向(>)来提取文本?script是将shell输出记录到文件typescript的命令。@AaronDigulla我不知道脚本
,它是linux util中的一个可执行文件(一般名称可怕)。我已经解释了它的作用。链接断开了,应该断开。虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。否则,人们可能会投票否决或标记此答案。感谢您发布您的答案!请务必仔细阅读本手册。还请注意,每次链接到自己的网站/产品时,都需要发布免责声明。
+show logging
Currently logging to mylog.
Logs will be appended to the log file.
Output will be logged and displayed
+p myvar
$2 = 0
+where
+info b