【问题标题】:Can't set breakpoints when using gdb in emacs (or DDD)在 emacs(或 DDD)中使用 gdb 时无法设置断点
【发布时间】:2012-02-15 06:46:10
【问题描述】:

我正在尝试将 gdb 与 emacs 一起使用。我试图调试的库是由进程加载的,不能直接运行。因此,我使用 gdb 中的 attach 命令附加到该进程。当我在 shell 中使用 gdb 时,附加到进程并设置断点可以正常工作,但是当我在 emacs 中使用 gdb 时(通过按 M-x gdb 或 M-x gud-gdb),它无法设置断点。它向我显示了一个错误,上面写着“无法在 0x7efb04 访问内存”。我正在使用 emacs 23.1.1。

这是我遵循的过程的细分:

  1. M-x gdbM-x gud-gdb 在emacs 中启动gdb。
  2. 输入使用调试符号构建的可执行文件的名称。
  3. 键入“attach [PID]”以将 gdb 附加到正在运行的进程。
  4. 通过键入以下内容设置断点:文件名:行号。

最后一步给了我一个错误,上面写着“无法在 0x7efb04 访问内存”。

任何想法为什么会发生这种情况?

编辑:我在使用 DDD(GDB 的 UI)时遇到同样的错误。所以我想这不是特定于 emacs 的问题。

【问题讨论】:

    标签: emacs gdb ddd-debugger


    【解决方案1】:

    您是否使用调试信息进行编译?你有一些显示问题的代码吗? 其他 IDE 也会出现这种情况吗?

    【讨论】:

    • 是的,我已经用调试信息编译了库。我可以在 shell 中使用 gdb 进行调试。使用 DDD(用于 GDB 的 UI)时出现相同的错误。所以我猜这不是 emacs 特定的问题。
    【解决方案2】:

    我想通了。问题出在第 2 步。输入使用调试符号构建的可执行文件的名称会导致问题。相反,只需启动 GDB 并附加到进程即可。我不确定这是否是预期的行为。

    在 DDD 中,必须先打开带有调试符号的可执行文件,然后才能附加到进程。我不知道如何在 DDD 中解决这个问题。

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2021-04-01
      • 1970-01-01
      • 2015-09-22
      相关资源
      最近更新 更多