Linux下使用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
}

保存后就可以看到,包含的源文件都能找到了,因此也就能智能感知了:

猜你喜欢

转载自blog.csdn.net/qq_34731182/article/details/87864663