VS Code 编译及调试环境配置

VS Code 编译及调试环境配置

lauch.json: 用于设置调试、运行时的环境,在右侧选三角形符号,创建launch.json文件,选择选择C++(GDB/LLDB)
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
“version”: “0.2.0”,
“configurations”: [
{
“name”: “(gdb) Launch”, // 强制:就一个名字而已,但是是必须要有的
“type”: “cppdbg”, // 强制:调试器的类型,Node debugger for node, php for PHP , go for GO
“request”: “launch”, // 强制:launch/attach
“program”: “ w o r k s p a c e F o l d e r / {workspaceFolder}/ workspaceFolder/{fileBasenameNoExtension}.out”, // 可执行文件的路径
一般仅修改这里,改变需要调试的可执行文件
“miDebuggerPath”: “/usr/bin/gdb”, // 调试器的位置
“preLaunchTask”:“build”, // 调试前编译任务名称
“args”: [], // 调试参数
“stopAtEntry”: false,
“cwd”: “KaTeX parse error: Expected 'EOF', got '}' at position 248: …res": true } ] }̲ ] } **tasks.js…{workspaceFolder}/ f i l e B a s e n a m e " , / / 被编译文件,通常为 . c p p / . c / . c c 文件等 " − I " , / / i n c l u d e p a t h 指令 " / u s r / i n c l u d e " , " − L " , / / l i b 路径 " / u s r / l i b / x 8 6 6 4 − l i n u x − g n u " , " − l " , / / 链接库文件 1 " o p e n c v c o r e " , " − l " , / / 链接库文件 2 " o p e n c v h i g h g u i " , " − o " , / / 生成指定名称的可执行文件 " {fileBasename}", // 被编译文件,通常为.cpp/.c/.cc文件等 "-I", // include path指令 "/usr/include", "-L", // lib路径 "/usr/lib/x86_64-linux-gnu", "-l", // 链接库文件1 "opencv_core", "-l", // 链接库文件2 "opencv_highgui", "-o", // 生成指定名称的可执行文件 " fileBasename",//被编译文件,通常为.cpp/.c/.cc文件等"I",//includepath指令"/usr/include","L",//lib路径"/usr/lib/x8664linuxgnu","l",//链接库文件1"opencvcore","l",//链接库文件2"opencvhighgui","o",//生成指定名称的可执行文件"{workspaceFolder}/${fileBasenameNoExtension}.out”
          /* -g hello.cpp -I/usr/include -L/usr/lib/x86_64-linux-gnu -lopencv_core -o hello.out */
],
“group”: {
“kind”: “build”,
“isDefault”: true
}
},
{
“label”: “cmakebuild”,
“type”: “shell”,
“command”: “cd build && cmake …/ && make”, // shell 编译命令,做并运算,即前一命令执行失败,则后一命令也不执行
“args”: []
}
]

}
c_cpp_properties.json:ctrl shift p —>configurations.json 基本不用设置,注意compilerPath路径是否是你想要的
{
“configurations”: [
{
“name”: “Linux”,     //配置名称,默认为系统名,可以自行更改
“includePath”: [     //(常用)运行项目包含.h头文件的目录,
“${workspaceFolder}/**”//此处会匹配工作文件下的所有文件
],     //添加"compilerPath"后,系统include路径可不写明
“defines”: [],        //(常用)定义一些需要的变量,等价于在编译时写"-D变量"
“compilerPath”: “/usr/bin/gcc”, //编译器的路径
“cStandard”: “gnu17”, //C标准的版本
“cppStandard”: “gnu++14”, //C++标准的版本
“intelliSenseMode”: “gcc-x64” //IntelliSense的一些配置,默认即可
}
],
“version”: 4
}

自动创建launch.json和tasks.json步骤:
1.C文件创建完成后,点击左侧三角形或者选择运行中的添加配置,选择选择第一项"C++ (GDB/LLDB)"(Windows那个是给MSVC编译器用的,MingGW需要使用GDB),
2.接下来选择默认的"gcc.exe - 生成和调试活动文件"(或"g++.exe - 生成和调试活动文件",具体取决于之前编译器路径的配置)
3.接下来会自动创建launch.json文件,进入调试模式
4.代码会被自动编译,并自动以调试模式执行一遍生成的程序。如果代码没什么问题,且未设置任何断点或等待外部输入的代码,
这个黄框一般只会闪现一下,程序一结束就会回归正常。
但注意如果代码中存在等待键盘输入的代码(比如scanf()这类),调试界面就会卡住而不会自动退出(因为你要输入的东西还没输呢)。
由于程序是在“终端”里执行的,要输入内容的话需要先切换到“终端”
预定义变量的意义解释
${workspaceFolder} :表示当前workspace文件夹路径,如C:\Users\admin\Desktop\test
${workspaceRootFolderName}:表示workspace的文件夹名,如test
${file}:文件自身的绝对路径,如C:\Users\admin\Desktop\test.vscode\launch.json
${relativeFile}:文件在workspace中的路径,如.vscode\launch.json
${fileBasenameNoExtension}:当前文件的文件名,不带后缀,如hello/launch
${fileBasename}:当前文件的文件名,如 hello.cpp/launch.json等
${fileDirname}:文件所在的文件夹路径,也即C:\Users\admin\Desktop\test.vscode
${fileExtname}:当前文件的后缀,也即.json
${lineNumber}:当前文件光标所在的行号
${env:PATH}:系统中的环境变量

.vscode下的配置文件:
1、c_cpp_properties.json一般用于添加包含路径,方便程序员编写代码时直接引用外部文件。该文件对编写代码有用,引用文件时不会提示错误,但对运行代码用处不大。
2、launch.json用于调试运行代码。tasks.json用于编译代码
3、settings.json是runcode的配置文件,用于直接点击运行代码

使用VSCode时,最好确保VSCode与.c的工作目录一致,即将.c放在根目录下,但是当工程大时,应将头文件与源文件分开在不同的文件夹下进行管理,有如下两种方式引入头文件:

1.在头文件中#include “C:/Users/Administrator/Desktop/TEST/include/test.h”,加入绝对路径,才可以找到头文件

注意:在windows系统下,路径的符号时“/” 或者 “\”,而在linux下只能是“/”

2.若工作目录不一致,引用外部文件时最好使用绝对地址,运行时需注意在settings.json或tasks.json添加.h所在文件夹路径。只

在c_cpp_properties.json添加.h所在文件夹路径,最多是在写代码不提示包含路径错误而已,对运行代码时引用外部文件不起作用。

注意:我在测试时,只修改c_cpp_properties.json(在include path中加入头文件路径),点击run code 和调试运行 均失败,修改了tasks.json(在args中,加入

​ “-I”,

​ “C:/Users/Administrator/Desktop/TEST/include”,

,即配置编译依赖路径)

后,点击run code失败,调试运行成功,而且生成了可执行文件test.exe,在终端输入“./test.exe”运行成功

,确定是setting.json配置错误,但未找到修改方法。也可以

在终端输入g++ -c test.cpp -I C:\Users\Administrator\Desktop\TEST\include,生成test.o文件,

然后输入g++ test.o -o test,生成可执行文件test.exe,

最后在终端输入“./test.exe”运行成功。

编译原理:分为编译和链接,编译:将源文件经编译器转换成汇编代码.s,汇编代码经汇编器转换成目标代码.o,然后其他目标文件,生成的.o文件,其他库文件经过链接最终成功可执行文件.exe

  1. 预编译

将.c 文件转化成 .i文件

使用的gcc命令是:gcc –E

对应于预处理命令cpp

  1. 编译

将.c/.h文件转换成.s文件

使用的gcc命令是:gcc –S

对应于编译命令 cc –S

  1. 汇编

将.s 文件转化成 .o文件

使用的gcc 命令是:gcc –c

对应于汇编命令是 as

  1. 链接

将.o文件转化成可执行程序

使用的gcc 命令是: gcc

对应于链接命令是 ld

总结起来编译过程就上面的四个过程:预编译处理(.c) --> 编译、优化程序(.s、.asm)--> 汇编程序(.obj、.o、.a、.ko) --> 链接程序(.exe、.elf、.axf等)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值