在emacs(或DDD)中使用gdb时无法设置断点

问题描述:

我试图在emacs中使用gdb。我试图调试的库被一个进程加载,不能直接运行。因此,我通过在gdb中使用attach命令来附加进程。当我在shell中使用gdb时,附加到进程并设置断点时工作正常,但是当我在emacs中使用gdb时(通过按M-x gdb或M-x gud-gdb),它无法设置断点。它告诉我一个错误,说“无法访问0x7efb04内存”。我使用的是emacs 23.1.1。在emacs(或DDD)中使用gdb时无法设置断点

这里是我遵循的流程的分解:

  1. M-x gdbM-x gud-gdb推出在Emacs GDB。
  2. 输入使用调试符号构建的可执行文件的名称。
  3. 键入“attach [PID]”将gdb附加到正在运行的进程。
  4. 键入以下命令设置断点:filename:行号。

最后一步给我一个错误,说“不能访问0x7efb04内存”。

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

编辑:当使用DDD(用于GDB的用户界面)时,我得到相同的错误。所以我想这不是一个特定于emacs的问题。

我想通了。问题在于步骤2.输入使用调试符号构建的可执行文件的名称会导致问题。相反,只需启动GDB并附加到流程就可以正常工作。我不确定这是否是预期的行为。

在DDD中,带有调试符号的可执行文件必须先打开,然后才能连接到进程。我不知道如何绕过DDD。

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

+0

是的,我已经编译了库的调试信息。我可以在shell中使用gdb进行调试。使用DDD(用于GDB的UI)时出现相同的错误。所以我想这不是一个emacs特定问题。 – user1210622 2012-02-15 07:12:19