【问题标题】:How do you debug c/c++ source code in linux using emacs?如何使用 emacs 在 linux 中调试 c/c++ 源代码?
【发布时间】:2010-04-08 10:20:51
【问题描述】:

我正在使用 emacs 和 autotools,在 linux 上编写和编译 c/c++ 源代码。
我在 emacs 中通过 GUD 使用 gdb。
为了方便起见,我定义了:F7:compile、F10:gud-next、F11:gud-step、F5:gud-cont、F9:gud-tbreak、F8:gud-until、F4:gud-print。
我主要对从 emacs 调试 linux 上的 c/c++ 源代码感兴趣,我想获得 gdb 所能提供的最大功能。
不幸的是,我只使用 F4 打印光标下的变量。

所以我的问题是你们如何调试源代码?
你用什么程序?
您主要使用哪些键绑定(功能)?
您需要调试器为您做什么?
如果你做了奇怪的事情,那也没关系。我想知道一切来提高我的速度。
提前致谢。
米海

【问题讨论】:

    标签: c++ linux emacs gdb


    【解决方案1】:

    我使用M-x gdb... 命令选择我需要的窗口,然后使用gdb 提示符。

    【讨论】:

      【解决方案2】:

      gdb 运行后,我经常在源代码行用 C-x SPC 设置断点,

      【讨论】:

        【解决方案3】:

        通过使用命令行而不是键绑定,您将充分利用gdb。我使用的最有用的命令:

        • bt - 打印回溯;有助于了解您所在位置的完整背景
        • s, n, cont - 一步,下一步,继续
        • run - 对于在同一会话中重新开始非常有用
        • watch - 设置观察点;有助于捕捉值的变化
        • call - 调用函数
        • display - 每次程序停止时打印一个值。

        【讨论】:

          【解决方案4】:

          valgrind 非常适合检测内存错误。大多数情况下,您会得到错误所在的确切位置。

          gdb 也不错,但没有很好的界面,所以最好与 ddd 或 Eclipse 之类的 gui 一起使用(是的,我在 Eclipse 中使用 gdb,它已内置支持它)。

          【讨论】:

          • FWIW 我更喜欢 GDB 的命令行界面而不是基于 GUI 的设置。我怀疑对于在命令行上花费大量时间的任何人来说都是如此。
          • 当 gdb 独立于 IDE 使用时,我更喜欢 gdb -tui,我更喜欢 Clang 静态分析器而不是 Valgrind。
          • Ekhm 伙计们,当你投反对票时,会有这个小提醒来发表评论,为什么你觉得答案不好。那么,为什么?
          • 他正在谈论在 emacs 中将 GUD 接口与 gdb 一起使用。这是一个与编辑器完全集成的前端,可显示您在当前源文件中的位置等。它不是普通的 gdb 界面。所以你的答案看起来很无知。
          • @Justin 我专门回答了前两个问题:“所以我的问题是你们如何调试源代码?你们使用什么程序?”
          【解决方案5】:

          我只使用调试器来获取分段错误的回溯。对于其他一切,我使用 printf 调试。

          【讨论】:

          • 使用 printf 调试很糟糕。尤其是您需要重新编译和链接可能会引入其他错误。效率低下、耗时且是错误的来源。使用调试器。这就是它存在的原因。
          猜你喜欢
          • 1970-01-01
          • 2011-06-26
          • 2010-10-14
          • 2014-11-02
          • 2021-07-14
          • 1970-01-01
          • 1970-01-01
          • 2020-03-06
          相关资源
          最近更新 更多