Ubuntu中使用VScode编译调试C/C++
总体上来说还是可以的,除了一些很奇怪的小bug外,整体上调试起来还是不错的,主要是颜值高啊,界面分割的合理啊,简洁明了啊,不像有些IDE看着就累,更别说调试了。
估计大部分人在linux上组织工程项目是用cmake吧,那就装下面这个插件,这样就能让cmakelists有语法高亮功能,要不然看上去全是清一色,不好看。
写好CMakeLists.txt后,就可以编译了
注意要想能够调试代码要将CMakeLists.txt中的编译模式设为Debug模式,也就是要加入下面这句代码:
set(CMAKE_BUILD_TYPE Debug)
1.编译和生成
法一:略麻烦,并且每次修改代码后都要在vscode的终端中手动输入下面命令来重新编译:
mkdir build
cd build
cmake ..
make
法二:配置tasks.json文件
按Ctrl+Shift+P打开vscode控制台,输入Tasks: Configure Tasks,再选择Create tasks.json file from templates,选择Others模板,就自动生成了一个tasks.json文件
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",//这里的名称记住,需要跟launch.json中的prelaunch一项的内容相同
"type": "shell",
"command": "bash .vscode/build.sh",//build.sh文件需要自己编写
"group":{//新建该项
"kind": "build",
"isDefault": true
}
}
]
}
然后在./vscode目录下新建build.sh,并将内容设为:
#!/bin/bash
cd build
cmake ..
make
这样就可以通过Ctrl+Shift+B来执行tasks.json,间接地执行bash .vscode/build.sh命令,从而实现程序的编译和生成了
如果没有报错则说明编译成功了,下面就可以运行或调试了
2.运行和调试
在上面的视图中,点击添加配置
选择C++(GDB/LLDB)
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/imageBasics",//该项填写生成的可执行文件的实际路径,注意后缀名
"args": [],//如果要给main函数传参数,在此添加。注意每项要加引号并用逗号隔开
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask":"echo"//新建该项,这样就可以每次按F5运行程序之前先执行task.json的内容,也就是重新编译和生成程序
//注意该项的内容要与tasks.json中的prelaunch的内容一致
}
]
}
修改好并且保存后就可以调试或运行了。
按F5后可以看到vscode的终端重新编译和生成了一遍程序
运行时程序也会停在断点处
可以看出程序停在了断点处,下面就可以分步调试了。
3.智能感知IntelliSense
最后,为了更好的能够IntelliSense,也就是不会出现下面的情况:
首先必须在CMakeLists.txt中加入下行代码,然后再进行编译和生成,这样就会在编译时生成compile_commands.json文件
set(CMAKE_EXPORT_COMPILE_COMMANDS on)
然后点击其中任意一个include后,再点击上方出现的小灯泡,选择第二个选项
这时会新建c_cpp_properties.json文件,并新建"compileCommands"一项
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compileCommands": "build/compile_commands.json",//新建该项,填入编译时生成的compile_commands.json文件所在的路径
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
保存后就可以看到,包含的源文件都能找到了,因此也就能智能感知了:
上一篇: tf.nn.moments()函数解析(最清晰的解释)
下一篇: 只准一次
推荐阅读
-
Ubuntu下leveldb的安装使用(C++中)
-
Windows下使用VS Code 编译、运行和调试C/C++
-
使用VS Code编译调试C++程序
-
【VSCode】Windows下VSCode编译调试c/c++
-
VSCode C++多文件编译的简单使用方法
-
使用VS Code和WSL搭建C++编译、调试环境
-
C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…
-
使用Visual Studio Code开发(编译、调试)C++程序与Java程序
-
使用 Visual Studio Code 编译和调试 C++ 文件
-
Mac下使用VScode编译配置C/C++程序详细图文教程