为什么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
相关产品推荐
相关产品推荐

