You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中运行C++ Hello World程序触发Segmentation Fault求助

解决VS Code中g++编译的Hello World程序触发段错误问题

问题背景

  • 测试代码:
#include <iostream>

int main() {
    std::cout << "Hello World!";
    return 0;
}
  • 使用环境:VS Code 搭配 MSYS2 提供的 g++ 编译器,版本信息如下:
g++.exe (Rev6, Built by MSYS2 project) 13.1.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • 异常情况:调试时程序在std::cout << "Hello World!";语句处触发Segmentation Fault(段错误),且该问题仅在VS Code中运行程序时出现,终端直接编译运行无异常。

排查与解决方案

1. 检查调试配置文件(launch.json)

  • 确认miDebuggerPath字段指向MSYS2套件中的gdb路径,例如C:/msys64/usr/bin/gdb.exe,避免使用其他版本的gdb导致兼容性问题。
  • 验证program字段的路径是否正确指向编译生成的可执行文件,路径中不要包含中文或特殊字符。

2. 匹配编译器与调试器版本

  • MSYS2的g和gdb需属于同一套件版本,执行pacman -S gdb更新gdb至对应版本,确保与g 13.1.0兼容。

3. 重置VS Code的C/C++扩展配置

  • 删除项目根目录下.vscode文件夹中的c_cpp_properties.json、launch.json、tasks.json文件,通过VS Code的C/C++扩展重新生成配置。
  • 确认扩展设置中的Compiler Path指向MSYS2的g++路径,而非系统中其他版本的编译器。

4. 调整系统环境变量优先级

  • 将MSYS2的usr/bin路径移至系统PATH环境变量的最前端,确保VS Code优先调用MSYS2的编译和调试工具,而非其他冲突版本。

5. 验证终端编译运行

  • 在MSYS2终端中执行g++ main.cpp -o main && ./main,确认程序能正常输出,以此排除代码本身的问题。

内容的提问来源于stack exchange,提问作者Lytrix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:12:24