根据本文步骤操作,复制本文的launch.json文件后,可实现不闪退的外部控制台输出。设置编码方式后,可消除中文乱码问题。
目录
一、 不闪退的外部控制台输出
1. 在任意空文件夹里,创建test.c文件
//test.c
#include <stdio.h>
int main () {
printf("Hello world!\n你好!\n");
return 0;
}
2. 点击调试后,选择gcc.exe
3. 产生了tasks.json文件。确认自己在test.c页面,而不是task.json页面,然后点击左侧的“运行和调试”
4. 点击“创建launch.json”,然后选择C++(GDB/LLDB)
5. 成功创建“launch.json”
6. 把launch.json的内容,替换为下面的代码,然后修改miDebuggerPath项的路径为自己的gdb.exe路径。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "C:\\Windows\\system32\\cmd.exe",
"args": [
"/C",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"&",
"pause"
],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Program Files\\TDM-GCC-64\\bin\\gdb.exe",//把这个路径改成自己电脑的gdb.exe路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 生成活动文件"
}
]
}
不知道gdb.exe路径的,打开tasks.json,可以看到command的路径如下:
复制tasks.json的command路径,把gcc改成gdb,粘贴到miDebuggerPath上
7. tasks.json文件没改过,代码如下供参考:
注意,command的路径应该是自己电脑的gcc.exe的路径
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "D:\\Program Files\\TDM-GCC-64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
二、 消除中文乱码
点击调试,外部控制台的中文内容如果没有乱码,后面的就不用看了。
如果中文显示有乱码,说明电脑控制台用的编码方式和vscode不一致。一般vscode默认是UTF8,电脑默认是GBK。这种情况下VSCode调试代码,外部控制台调出成功,但是有中文乱码
解决方案一:修改CMD编码方式为UTF-8
1. win键+R,输入regedit,确定
2. 在地址栏输入
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
3. 右键→新建→字符串值→名称填“autorun”
4. 右键“autorun”→选择“修改”→填入“chcp 65001>nul”→确定
UTF-8测试用例test.c
此时用VSCode运行test.c,中文不乱码,成功!
解决方案二:修改VSCode的编码方式为GBK
1. 打开VScode,按 Ctrl+Shift+P
2. 在输入框中输入 user ,点击“打开用户设置”:
3. 在设置的输入框输入“encoding”,把“Files:Encoding”选项的UTF-8改成GBK
GBK测试用例testGBK.c
此时VSCode的默认编码方式已经是GBK了,创建新文件testGBK.c
//testGBK.c
#include <stdio.h>
int main () {
printf("VSCode用GBK,外部控制台用GBK,还乱码吗?\n");
return 0;
}
此时用VSCode运行testGBK.c,中文不乱码,成功!
GBK测试用例test.c
但是原来的test.c文件仍然是UTF-8编码的,点击右下角的“UTF-8”,点击“通过编码重新打开”,选择GBK
重新编码后,原来代码部分的中文“你好”乱码了,把它改回“你好”
此时用VSCode运行test.c,中文不乱码,成功!