【问题标题】:How to implement GDB debugging on my own full system simulator?如何在我自己的全系统模拟器上实现 GDB 调试?
【发布时间】:2014-04-02 06:01:22
【问题描述】:

我正在为 C++ 中的自定义微控制器编写模拟器程序。我希望用户能够使用 GDB 来调试他们的程序,就像它在真实目标上运行一样。

我发现的最佳解决方案似乎是为我的模拟器编写一个 GDB 存根,该存根将使用网络协议与 GDB 进行通信。但是,这涉及编写一个完整的程序来处理网络通信以及与 GDB 本身的通信。

这似乎有点矫枉过正,因为客户端和目标将在同一台机器上运行。没有更简单的方法吗?如果没有,随着 GDB 的流行,我会认为存在一个库,或者至少是示例,可以帮助将存根嵌入到普通的桌面 PC 程序中?

【问题讨论】:

    标签: c++ debugging gdb simulator stub


    【解决方案1】:

    您当然可以编写一个作为主应用程序一部分的“存根”——您需要做的就是监听相关的通信通道,并对正在发送的命令/数据做出适当的响应。

    这里有一篇文章很好地描述了编写存根的过程: http://www.embecosm.com/appnotes/ean4/embecosm-howto-rsp-server-ean4-issue-2.html

    它还讨论了(尽管是简短的)“使用模拟器”。

    【讨论】:

      【解决方案2】:

      GDB 还支持将模拟器“嵌入”到 gdb 本身中。这是由 gdb 中的“target sim”命令调用的。

      查看 gdb 的 sim 子目录,了解一些已经实现的模拟器。

      【讨论】:

        猜你喜欢
        • 2017-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 2021-04-27
        • 2012-09-02
        相关资源
        最近更新 更多