如何在Linux上调试实时应用程序?

时间:2015-11-14 17:48:35

标签: linux debugging gdb real-time

我有一个与某些设备(OS Linux)交换数据的进程。我想附加到这个过程(不要停止它),并实时观察某些变量和其他信息的值。是否有可能使用GDB或其他东西,如果是的话怎么做?到目前为止,我正在使用printfs。

1 个答案:

答案 0 :(得分:2)

gdb有两个工具可以帮助解决这个调试问题。

一个是相对较新的dprintf命令。这基本上类似于printf调试 - 除了您可以选择在gdb会话期间打印的内容,并且您不需要重新编译。

dprintf并非总是非常“实时”。默认情况下,它涉及停止你的下级,以便gdb可以提取信息并打印它。您可能需要set dprintf-style agent,但我认为这意味着使用远程代理,并非所有这些都支持此功能。

另一个工具是gdb“tracepoint”功能。跟踪点最初设计用于支持这种情况 - 从无法停止的实时服务器记录数据。

跟踪点也只适用于合适的远程代理。不过你可以使用gdbserver - 这很容易做到并在本地工作得很好。

gdb手册中有大量关于跟踪点的文档,我建议阅读这些文档以了解如何使用它们。