【问题标题】:How to debug real time application on Linux?如何在 Linux 上调试实时应用程序?
【发布时间】:2015-11-14 17:48:35
【问题描述】:

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

【问题讨论】:

    标签: linux debugging gdb real-time


    【解决方案1】:

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

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

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

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

    跟踪点也只能与合适的远程代理一起使用。不过,您可以只使用gdbserver——这很容易做到,而且在本地也可以正常工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-23
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2020-07-31
      相关资源
      最近更新 更多