问题描述
以以下代码为例,具体问题就是每次修改代码之后运行发现都没有生效,比如第一次编译运行打印了“Hello”
,我在添加新语句后运行程序发现修改并未生效,网上找解决方法大多是下面这种:
点击左下角设置标志图 -> 设置,出来了设置相关的东西,搜索 files.autoSave 第一种:把"files.autoSave":“off” 修改成 “files.autoSave”:"onFocusChange
#include<iostream>
using namespace std;
int main(){
cout<<"Hello"<<endl;
}
我尝试这种方法并未起作用,最后经过查看官方文档等等对比C++环境的配置发现是在配置launch.json
文件时点击add configuration
时添加的配置少了下面句语句,在添加以后就成功了。
这里解释一下launch.json 文件的作用,launch.json文件是Vscode关于代码调试的配置文件,在这里面配置了gdb.exe
调试程序的运行,下面是官方文档的一些信息:
其中program
设置指定要调试的程序。stopAtEntry
将值更改为true以使调试器main在您开始调试时停止该方法。另外preLaunchTask
设置用于指定要在启动前执行的任务。确保它与tasks.json文件label设置一致
"preLaunchTask": "C/C++: g++.exe 生成活动文件",
下面是我的launch.json配置文件代码
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"preLaunchTask": "C/C++: g++.exe 生成活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\TDM-GCC-64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}