【发布时间】:2022-09-24 16:18:29
【问题描述】:
我在 Ubuntu Linux 版本 22.04.1 LTS 上使用 VSCode 版本 1.71.0 784b0177c56c607789f9638da7b6bf3230d47a8c x64。我正在使用 GCC 版本 11.2.0 进行编译,但是当使用 Clang 14.0.0 和 Clang 16.0.0 编译应用程序时会出现同样的问题。我的 GDB 版本是12.0.90。我正在为 VSCode 使用 C/C++ v.1.12.4 和 CMake Tools v1.12.26 插件。我使用默认分配给F5 快捷方式的CMake: Debug 命令开始调试会话。一段时间以来,我正在调试的应用程序在遇到断点时开始崩溃。确切的消息如下:
Aborted (core dumped)
[1] + Aborted (core dumped) \"/usr/bin/gdb\" --interpreter=mi --tty=${DbgTerm} 0<\"/tmp/Microsoft-MIEngine-In-ifoflcfq.xvl\" 1>\"/tmp/Microsoft-MIEngine-Out-h4yklwfm.ghy\"
当我从命令行使用 GDB 时不会出现同样的问题,因此,我认为问题与 GDB 与 VSCode 的集成有关。我无法用小程序重现该问题。对于小型测试应用程序,它可以正常工作。在调试会话开始时,在清除终端并开始出现被调试应用程序的日志之前,会显示以下警告一小段时间。
warning: GDB: Failed to set controlling terminal: Operation not permitted
我不确定它是否与问题有关。
-
几天以来,我遇到了完全相同的问题。我有一个相同的系统、工具集和 IDE 扩展(都在同一个版本)。而且我还通过 SIGABRT 从 gdb 获得核心转储。不确定它是否与 GDB 与 CMakeTools 扩展的集成有关,(但我想我也尝试了
launch.json配置,结果完全相同)。这让我想,这可能与 vscode 如何在 mi-mode 中调用 GDB 有关。我会检查github.com/microsoft/vscode-cpptools是否有类似的问题, -
看起来这两条
Aborted消息来自 shell,而不是 GDB 本身。通常,当 GDB 与 SIGABRT 一起存在时,这是因为触发了内部断言,它应该在某处打印错误 - 尽管如果 GDB 从 VSCode 内部运行,我假设应用程序正在消耗错误。如果已创建核心文件,您可以尝试gdb -q -ex \'bt\' /usr/bin/gdb -c <COREFILE>并查看回溯是否包含有用的符号(可能需要先为 GDB 安装调试符号包),然后将回溯添加到此问题。
标签: c++ linux visual-studio-code gdb vscode-debugger