vscode安装无需多言,官网下载傻瓜安装即可。本文主要介绍如何使用vscode进行调试。
一、准备工作——安装插件:
(还有别的吗...忘记了😅。。。)
二、编写cpp代码:
Tips:在vscode中,一个文件夹就是一个项目,所以你可以先建一个“vscode_workspace”,
然后建项目文件夹:
然后就可以建文件写代码了(C++Test就是你的项目)
三、调试过程和原理
编译工具
我使用的工具是g++😀,所以说,请先安装配置g++
题外话
如果我们直接运行cpp文件:
会发现生成了一个test.exe文件:
这个文件其实是build产生的文件(理论上来说应该先点"complile",再点"build"。不过在vccode中它会自动先给你compile再build)
而你运行的其实就是这个exe文件
Tips:关于compile和build的区别
参考:funnyfan
"compile"是“编译”的意思,“build”是“链接”的意思。
compile的作用是对你的代码进行语法检查,将你的文本程序语言转化成计算机可以运行的“01010....”形式的二进制文件。
build的作用是将你在程序中调用到的类库融合到你的程序中,比如你用到了printf()函数,那么内部实现该函数的类库代码就会添加到你的程序中。
compile过程生成“.obj”文件或".o"文件,这个和编译器有关,vc++中是“.obj”文件。
build过程生成“.exe”文件。这个可以直接运行
理论上来说应该先点"complile",再点"build"。不过在vc++中直接点“build”它会自动先给你compile再build。
原理
原理分两步走:
一、vscode通过tasks.json文件配置一些参数,这个文件一运行就相当于build(编译+build),会生成一个exe文件;
二、然后通过launch.json文件以debug方式来运行上面生成的exe文件。
步骤
第一步,建立tasks.json文件:
首先敲完测试代码后,按:ctrl+shift+P,搜索:configure task
然后选择:
之后会生成并打开一个tasks.json的文件,把里面的东西全删了,换上下面这个:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "Compile",
"command": "E:\\ProgramFiles\\minGW\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"${workspaceFolder}\\test.cpp",//这个表示你要编译的文件
"-o",
"${workspaceFolder}\\${fileBasenameNoExtension}.exe"//这个表示输出的文件名
//tips: ${fileDirname} 表示的是当前文件所在的文件夹路径,不包括此文件夹名(C++Test)
//workspaceFolder 表示当前项目文件夹的路径(C++Test)
//${fileBasenameNoExtension} 表示当前打开的文件的名字:tasks
//${file} 表示当前正在编辑的文件的绝对路径+文件名+后缀
],
"options": {
"cwd": "E:\\ProgramFiles\\minGW\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "compiler: E:\\ProgramFiles\\minGW\\mingw64\\bin\\g++.exe"
}
]
}
说明:
如何测试这个文件写对了?按ctrl+shift+B或者:
如果生成了一个exe文件的话,
表示OK!
第二步,建立launch.json文件:
最后,点击:
出现这个表示成功:
说明:
建议事先了解一下像workspaceFolder,fileBasename这样的东西(网上搜索就有),说一下2个特别的:
第一个:fileBasenameNoExtension
准确的说,指的是当前打开的文件的文件名【在工作区中显示的文件的文件名】,注意:比如tasks.json里面有一个这个,并不意味着这个值就是“tasks”!
事实上,前面我们在tasks.json写完后测试了一下(ctrl+shift+B),生成的是tasks.exe,这是因为:
如果你这样:
第二个:fileDirname
非常奇怪,按道理因该包括当前文件所在的文件夹名的,然后并没有:
为何呢?难道说vscode只是把这个.vscode文件夹当成是一个辅助的东西,所以直接忽略了?
(PS:.vscode文件夹是建tasks.json文件时自动创建的)
完。
顺便贴一下我自己的launch.json(图个方便而已):
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "调试",
"type": "cppdbg",//这里指定以debug模式运行!
"request": "launch",
"program": "${workspaceFolder}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "E:\\ProgramFiles\\minGW\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Compile"
}
]
}