运行任何二进制文件后,GDB Emacs挂起

时间:2015-03-03 14:46:07

标签: emacs gdb

我正在尝试设置Emacs和GDB,以便我可以运行gdb-many-windows选项。但是,运行任何二进制文件后,m-x gdb会挂起,而Emacs开始消耗100%的CPU并且无响应。

我正在竞选:

以下是发生的事情:

我用m-x gdb运行一些二进制文件,然后运行' gdb --i = mi [二进制名称]'。一切正常,正确的窗户设置和一切。然后我发出命令' run'到GDB,它正确运行代码。但是一旦代码完成,Emacs就会变得没有响应并开始消耗100%的CPU能力。即使使用简单的hello world程序也会发生这种情况。我尝试过各种选项,比如--annotate = 3, - fulllname等。

如果我改为运行m-x gud-gdb,我可以运行相同的二进制文件,gdb正常退出,我可以继续使用Emacs。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我的mac确认了这个错误。更重要的是,具有相同配置(实际上根本没有配置)的emacs在我的Linux机器上运行良好。所以这是一个与Mac OS X相关的错误。

更新

  • 似乎emacs中的某些模式/插件与“gdb”冲突。当我在.emacs中没有加载任何内容的情况下运行它时,它会在gdb调试完成时停止挂起emacs。 我将尝试跟踪哪种模式导致此类问题,并在此处报告。
  • 当gdb完成调试时,许多模式似乎会导致冻结emacs,例如“helm”以及任何使用helm的模式,“function-args”(在源代码中启用helm的某些功能)
  • 在我的配置中,启用了许多模式,gdb是导致helm在到达终点时冻结emacs的关键模式。
  • 这不是semantic-mode引起的,而是helm-semantic-or-imenu引起的,当你想使用semantic-mode时可能会启用。

结论:

它是由gdb引起的,它在Mac OS X中表现不佳,甚至其基本功能都有错误。在Linux下,它没有任何明显的问题,这就是.emacs在Linux中工作的原因。搜索semantic-mode并确保停用所有semantic-mode,然后它就可以正常工作。

请注意,即使您在运行gdb之前停用semantic-mode,如果最初启用semantic-mode,它仍会冻结emacs。 addi最初已停用。

感谢 thierryvolpiatto 获取调试方面的帮助: https://github.com/emacs-helm/helm/issues/1168#issuecomment-140132443