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



我正在尝试将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:行号设置断点

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

你知道为什么会这样吗?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新