3

我正在尝试将 gdb 与 emacs 一起使用。我试图调试的库是由进程加载的,不能直接运行。因此,我使用 gdb 中的 attach 命令附加到该进程。当我在 shell 中使用 gdb 时,附加到进程并设置断点可以正常工作,但是当我在 emacs 中使用 gdb 时(通过按 Mx gdb 或 Mx 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特定的问题。

4

2 回答 2

0

您是否使用调试信息进行了编译?你有一些显示问题的代码吗?这是否也发生在其他 IDE 中?

于 2012-02-15T06:49:14.790 回答
0

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

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

于 2012-03-01T08:34:44.567 回答