在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时无法设置断点
这里是我遵循的流程的分解:
- 按
M-x gdb
或M-x gud-gdb
推出在Emacs GDB。 - 输入使用调试符号构建的可执行文件的名称。
- 键入“attach [PID]”将gdb附加到正在运行的进程。
- 键入以下命令设置断点:filename:行号。
最后一步给我一个错误,说“不能访问0x7efb04内存”。
任何想法为什么会发生这种情况?
编辑:当使用DDD(用于GDB的用户界面)时,我得到相同的错误。所以我想这不是一个特定于emacs的问题。
答
我想通了。问题在于步骤2.输入使用调试符号构建的可执行文件的名称会导致问题。相反,只需启动GDB并附加到流程就可以正常工作。我不确定这是否是预期的行为。
在DDD中,带有调试符号的可执行文件必须先打开,然后才能连接到进程。我不知道如何绕过DDD。
答
您是否使用调试信息进行编译?你有一些代码可以显示问题吗? 这是否也发生在其他IDE?
是的,我已经编译了库的调试信息。我可以在shell中使用gdb进行调试。使用DDD(用于GDB的UI)时出现相同的错误。所以我想这不是一个emacs特定问题。 – user1210622 2012-02-15 07:12:19