如何将整个GDB会话转储到一个文件中,包括我键入的命令及其输出?

如何将整个GDB会话转储到一个文件中,包括我键入的命令及其输出?,gdb,Gdb,在bash中,我可以使用script命令,该命令将shell上显示的所有内容转储到文件中,包括: 键入的命令 PS1线 命令的stdout和stderr gdb中的等价物是什么 我试图从GDB内部运行shell脚本,但在我点击return之后,我在shell中,丢失了shell提示符,无法再运行命令。此外,我无法使用ctrl+c或ctrl+\退出。我需要强制杀死/bin/login tty2退出。看看GDB文档。搜索“固定命令序列”。有一种方法可以将GDB命令保存在文件中,并使用source

在bash中,我可以使用
script
命令,该命令将shell上显示的所有内容转储到文件中,包括:

  • 键入的命令
  • PS1线
  • 命令的stdout和stderr
gdb中的等价物是什么


我试图从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