GDB Emacs 在 运行 任何二进制文件后挂起
GDB Emacs hangs after running any binary
我正在尝试设置 Emacs 和 GDB,以便我可以使用 gdb-many-windows 选项 运行ning。但是,m-x gdb 在 运行 任何二进制文件后挂起,Emacs 开始消耗 100% CPU 并变得无响应。
我正在运行宁:
- OS X 10.10.1.
- Emacs 25.0.50(Homebrew 中的那个)
- GDB 7.8.1(Homebrew 中的那个)
- 我的 Emacs 设置在这里:https://github.com/ChrKroer/emacs-setup
情况如下:
我 运行 一些带有 m-x gdb 的二进制文件,然后 'gdb --i=mi [name of binary]'。一切正常,正确的 windows 设置和一切。然后我将命令 'run' 给 GDB,它 运行 的代码是正确的。但是一旦代码完成,Emacs 就会变得无响应并开始消耗 100% CPU 的电量。即使使用简单的 hello world 程序也会发生这种情况。我尝试提供各种选项,例如 --annotate=3、--fullname 等
如果我改为 运行 m-x gud-gdb,我可以 运行 相同的二进制文件就好了,gdb 正常退出,我可以继续使用 Emacs。
如有任何帮助,我们将不胜感激。
我的 mac 确认了错误。更重要的是,具有相同配置(实际上根本没有配置)的 emacs 在我的 Linux machines 中运行良好。所以这是一个与 Mac OS X 相关的错误。
更新:
- emac中的某些modes/plugins似乎与"gdb"冲突。当我 运行 它没有在 .emacs 中加载任何东西时,它会在 gdb 调试完成时停止挂起 emacs。
我会尝试跟踪是哪种模式导致了此类问题,并在此报告。
似乎很多模式都可能导致在 gdb 完成调试时冻结 emacs,例如"helm" 和任何使用 helm 的模式,"function-args"(在其源代码中启用 helm 的某些功能)
根据我的配置,启用了数十种模式,helm
是导致gdb
在到达末尾时冻结emac的关键模式。
- 这不是因为
helm
,而是因为 semantic-mode
,当你想使用 helm-semantic-or-imenu
. 时可能会启用它
结论:
是semantic-mode
造成的,在Mac OS X中表现很差,连基本功能都有bug。在 Linux 下,它没有任何明显的问题,这就是 gdb
在 Linux 下工作的原因。搜索你的 .emacs
并确保禁用所有 semantic-mode
,然后它应该可以工作。
请注意,即使您在 运行 gdb
之前禁用了 semantic-mode
,如果最初启用了 semantic-mode
,它仍会冻结 emacs . semantic-mode
最初已被禁用。
感谢 thierryvolpiatto 帮助调试:
https://github.com/emacs-helm/helm/issues/1168#issuecomment-140132443
我正在尝试设置 Emacs 和 GDB,以便我可以使用 gdb-many-windows 选项 运行ning。但是,m-x gdb 在 运行 任何二进制文件后挂起,Emacs 开始消耗 100% CPU 并变得无响应。
我正在运行宁:
- OS X 10.10.1.
- Emacs 25.0.50(Homebrew 中的那个)
- GDB 7.8.1(Homebrew 中的那个)
- 我的 Emacs 设置在这里:https://github.com/ChrKroer/emacs-setup
情况如下:
我 运行 一些带有 m-x gdb 的二进制文件,然后 'gdb --i=mi [name of binary]'。一切正常,正确的 windows 设置和一切。然后我将命令 'run' 给 GDB,它 运行 的代码是正确的。但是一旦代码完成,Emacs 就会变得无响应并开始消耗 100% CPU 的电量。即使使用简单的 hello world 程序也会发生这种情况。我尝试提供各种选项,例如 --annotate=3、--fullname 等
如果我改为 运行 m-x gud-gdb,我可以 运行 相同的二进制文件就好了,gdb 正常退出,我可以继续使用 Emacs。
如有任何帮助,我们将不胜感激。
我的 mac 确认了错误。更重要的是,具有相同配置(实际上根本没有配置)的 emacs 在我的 Linux machines 中运行良好。所以这是一个与 Mac OS X 相关的错误。
更新:
- emac中的某些modes/plugins似乎与"gdb"冲突。当我 运行 它没有在 .emacs 中加载任何东西时,它会在 gdb 调试完成时停止挂起 emacs。 我会尝试跟踪是哪种模式导致了此类问题,并在此报告。
似乎很多模式都可能导致在 gdb 完成调试时冻结 emacs,例如"helm" 和任何使用 helm 的模式,"function-args"(在其源代码中启用 helm 的某些功能)根据我的配置,启用了数十种模式,helm
是导致gdb
在到达末尾时冻结emac的关键模式。- 这不是因为
helm
,而是因为semantic-mode
,当你想使用helm-semantic-or-imenu
. 时可能会启用它
结论:
是semantic-mode
造成的,在Mac OS X中表现很差,连基本功能都有bug。在 Linux 下,它没有任何明显的问题,这就是 gdb
在 Linux 下工作的原因。搜索你的 .emacs
并确保禁用所有 semantic-mode
,然后它应该可以工作。
请注意,即使您在 运行 gdb
之前禁用了 semantic-mode
,如果最初启用了 semantic-mode
,它仍会冻结 emacs . semantic-mode
最初已被禁用。
感谢 thierryvolpiatto 帮助调试: https://github.com/emacs-helm/helm/issues/1168#issuecomment-140132443