VS Code中C编译器输出额外内容[1]+Done问题排查及命名询问
VS Code中C程序输出额外「[1] +Done」的问题
问题现象
编写的C程序本身未输出[1] +Done相关内容,但在VS Code调试运行时,输出中会附加调试器相关信息:
程序代码
#include<stdio.h> int main (){ int n, u; scanf("%d",&n); u = n%7; switch (u) { case 0: printf("sunday"); break; case 1: printf("monday"); break; case 2: printf("thusday"); break; case 3: printf("wednesay"); break; case 4: printf("thersday"); break; case 5: printf("fryday"); break; case 6: printf("saturday"); break; } return 0; }
实际输出
2 thusday[1] + Done "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-igxp13xf.fzz" 1>"/tmp/Microsoft-MIEngine-Out-t4ttjgxc.zay"
该程序在在线编译器中运行正常,无额外输出。
原因分析
这并非编译器配置问题,而是VS Code使用的Microsoft MIEngine调试器在调试会话结束时,自动输出的调试进程结束信息,属于调试器的附加日志,不是程序本身的输出内容。
解决方法
- 用
Ctrl+F5(Run Without Debugging)运行程序:跳过调试流程,直接执行程序,不会产生调试器附加输出 - 修改调试配置文件
launch.json:- 添加
"externalConsole": true,让程序在系统外部终端中运行,调试器信息不会混入程序输出 - 添加
"showDevDebugOutput": false,关闭调试器的开发调试日志输出
- 添加
问题名称
该现象没有特定的标准专有名称,一般称为GDB/MIEngine调试会话结束附加输出,本质是调试工具的日志信息泄露到了程序输出流中。
内容的提问来源于stack exchange,提问作者user29899462
相关产品推荐
相关产品推荐

