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

为什么VSCode调试控制台中C++的打印输出每行开头都带有@符号?

该异常输出是因为调试控制台(internalConsole)默认会对调试器返回的字符串添加类型标识(也就是开头的@符号),同时会把不可见字符转义成\r\n这样的显式格式,不属于代码本身的问题,修改调试输出的目标或者调试器参数即可解决。

修复步骤

方法1:修改launch.json配置(优先推荐)

打开项目下的.vscode/launch.json文件,在对应调试配置中修改或添加以下内容:

  • 如果你不需要强制使用调试控制台输出,直接把"console"字段值改为"integratedTerminal"(VSCode内置终端)或"externalTerminal"(系统独立终端),即可完全避免该格式问题:
{
    "name": "CMake Debug",
    "type": "cppdbg", // MSVC环境填cppvsdbg
    "request": "launch",
    "console": "integratedTerminal",
    // 其余原有配置保持不变
}
  • 如果你需要保留调试控制台作为输出目标,添加showDisplayString字段,同时根据调试器类型添加对应初始化命令:
{
    "name": "CMake Debug",
    "type": "cppdbg", // MSVC环境填cppvsdbg
    "request": "launch",
    "showDisplayString": false,
    // GDB/LLDB环境用下面的setupCommands
    "setupCommands": [
        {
            "description": "关闭字符串转义输出",
            "text": "set print escape no",
            "ignoreFailures": true
        }
    ],
    // 如果你是MSVC环境,用下面的setupCommands替换上面的
    // "setupCommands": [
    //     {
    //         "text": "set natvis displayString 0",
    //         "ignoreFailures": true
    //     }
    // ],
    // 其余原有配置保持不变
}

方法2:修改CMake Tools扩展配置

  • 打开VSCode设置页面(快捷键Ctrl+,/Cmd+,),搜索CMake › Debug: Use Debug Console
  • 取消该选项的勾选,CMake Tools调试时会自动把输出重定向到集成终端,无需手动修改launch.json。

方法3:临时修复

如果仅需要临时调试不需要修改永久配置,调试启动后在调试控制台底部输入框输入对应命令回车即可:

  • GDB/LLDB环境输入-exec set print escape no
  • MSVC环境输入-exec set natvis displayString 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:01