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

时间:2012-02-15 06:46:10

标签: emacs gdb ddd-debugger

我正在尝试将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. 键入以下内容设置断点:filename:行号。
  5. 最后一步给我一个错误,上面写着“无法访问0x7efb04的内存”。

    为什么会发生这种情况?

    编辑:使用DDD(GDB用户界面)时出现同样的错误。所以我想这不是特定于emacs的问题。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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