【问题标题】:Why GDB is crashing my program when break point is hit when using it from VSCode?为什么在从 VSCode 中使用断点时 GDB 会导致我的程序崩溃?
【发布时间】: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.0Clang 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 &lt;COREFILE&gt; 并查看回溯是否包含有用的符号(可能需要先为 GDB 安装调试符号包),然后将回溯添加到此问题。

标签: c++ linux visual-studio-code gdb vscode-debugger


【解决方案1】:

这似乎是 GDB 12.09 版本的问题,VS Code 通过从源代码构建将 GDB 升级到 12.1 为我解决了这个问题

https://github.com/microsoft/vscode-cpptools/issues/103#issuecomment-1151217772

【讨论】:

    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2018-10-15
    • 2019-09-08
    相关资源
    最近更新 更多