【问题标题】:GDB - redirect serial output (from dmesg) to file, but not gdb output / TUI?GDB - 将串行输出(来自 dmesg)重定向到文件,但不是 gdb 输出/TUI?
【发布时间】:2014-06-22 08:40:48
【问题描述】:

我正在使用 kgdb 通过串行电缆调试某些东西,所以我在 gdb 中“设置远程 /dev/ttyS1”,它通过 gdb 为我提供远程机器的输出。

有什么方法可以将此输出重定向到文件而不重定向 gdb 的其余输出?它也不会让我启用 TUI。我正在使用:

set logging file ~/gdb_output.log
set logging overwrite on
set logging redirect on
set logging on

谢谢!

序列号是从我的目标机器输入的,还是从 gdb 使用标准输出的输出?什么用stdin,什么用stdoutm,什么用stderr?

【问题讨论】:

  • 您是否希望文件中的输出字符串的任何部分具有唯一性以允许您使用 grep?
  • 您要重定向的输出是什么,仅仅是内核消息(又名 dmesg)还是程序输出?可以禁用内核消息输出到串行而不是将它们“重定向”到文件吗?您可以在使用“dmesg”命令后获取它们...
  • 在这种情况下,内核消息是通过串行输入的程序输出,这就是我想要重定向到文件的内容。我希望 GDB 启动的输出(即不是 printk 消息)和 gdb 打印语句等仍然在主窗口中。
  • 你的意思是喜欢这个答案:stackoverflow.com/questions/5941158/… ?
  • @Jordan,set logging redirect off 怎么样?我不明白您要设置什么样的工作流程(也许使用screen 记录调试会话会更好?),但GDB Manual 对调试选项有很好的描述..

标签: c linux terminal gdb kgdb


【解决方案1】:

设置远程目标后如何使用重定向和运行。

  1. 启动 gdb 将 debug_kernel 作为输入:
  2. 设置您的远程连接

    (gdb) 设置远程 /dev/ttyS1

  3. 加载调试内核文件让gdb开始调试

    (gdb) 文件调试内核

  4. 运行并将输出通过管道传输到文件

    (gdb) 运行 > file_to_save_kgdb_output

查看此文档以供参考: http://sourceware.org/gdb/onlinedocs/gdb/Input_002fOutput.html

【讨论】:

  • 我应该在哪里运行它,在我的目标机器或主机上?
  • 我刚刚意识到我误解了这个问题。忽略我最后的回答
  • 远程目标不支持使用“运行”。它是“目标远程”而不是“设置远程”不是吗?
猜你喜欢
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多