vscode调试文件(C++,ROS和cmake文件)-VsCode调试文件

参考文档:

code.visualstudio.com/docs/editor/variables-reference

code.visualstudio.com/docs/editor/tasks

主要修改task.json下的"args"、launch.json中的"program",“args”

注意task.json中的label以及launch.json中的preLaunchTask对应的要保持一致

几个比较常用的:

  1. ${workspaceFoler} vscode打开的文件夹路径
  2. ${file} 当前打开的文件路径
  3. ${fileDirname} 当前打开的文件的路径(不包括文件名)

首先,注意一点:

g++进行调试时需要先运行一遍,再开启调试模式,就可以正常进行了

tasks.json文件:

这里的type可以是cppbuild,也可以是shell,是shell的话要按照cmake的规则配置

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++-9 生成活动文件",
            "command": "/usr/bin/g++-9",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${workspaceFolder}/src/*.cpp",
                "-I",
                "${workspaceFolder}/include",
                "-o",
                "${workspaceFolder}/build/debug_test"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
        
    ]
    
}

shell版本(cmake版本):

{
    "version": "2.0.0",
    //这里相当于是cd build文件夹
    "options":{
        "cwd":"${workspaceFolder}/build"
    },
    "tasks": [
        //执行cmake ..命令
        {
            "type": "shell",
            "label":"cmake",
            "command":"cmake",
            "args":[
                ".."
            ]
        },
        //执行make命令
        {
            "label":"make",
            "group":{
                "kind":"build",
                "isDefault":true
            },
            "command":"make",
            "args":[
                
            ]
        },
        //这个label做了两件事cmake .. make
        {
            "label":"Build",
            "dependsOrder":"sequence", //按列出的顺序执行任务依赖项
            "dependsOn":[
                "cmake",
                "make"
            ]
        }
    ]
    
}

launch.json文件:(原始)

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": []
}

launch.json文件:(现在)

这个设置同样适用于cppbuild的task.json文件和shell版本的cmake task.json文案金

重要的几个设置:"program"和"preLaunchTask"这两个参数很重要

{
    "version":"0.2.0",
    "configurations":[
        {
        	"name":"g++-8 - 生成可调试活动文件",
            "type":"cppdbg",
            "request":"launch",
            "program":"${workspaceFolder}/build/debug_test", //这里的debug_test是可执行文件,是需要提前编译好放在这个目录下的,如果没有这个可执行文件,会报错,需要通过g++ src/function.cpp src/main.cpp -Iinclude -o build/debug_test这个命令生成可执行文件
            "args":["hello_debug!"],
            "stopAtEntry":false,
            "cwd":"${workspaceFolder}",
            "environment":[],
            "externalConsole":false,
            "MIMode":"gdb",
            //下面这些还没研究明白是干啥的,还不能用
            /*"setupComands":[
                {
                    "description":"为gdb启动整齐打印",
                    "text":"-enable-pretty-printing",
                    "ignoreFailures":true
                }
            ]
            */
            //下面的preLaunchTask参数要么是Build,要么是cppbuild,与上面的tasks.json中的type参数保持一致
            "preLaunchTask":"Build",
            "miDebuggerPath":"/usr/bin/gdb"
    	}
    ]
}

CMakeLists.txt文件的简写

cmake_minimum_required(VERSION 3.0)

project(HELLOWORLD)

# 指定include目录
include_directories(${CMAKE_SOURCE_DIR}/include)

# 指定编写文件所需要的C++的一些参数
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2 -Wall")

# 生成可以被调试的可执行文件
set(CMAKE_BUILD_TYPE Debug)


# 指定要执行
add_executable(helloWorld_cmake helloWorld.cpp)


文件目录:

请添加图片描述

f5:调试模式

f10:单步越过,下一步

f11:单步进入

上一篇:Gradient-based Adversarial Attacks against Text Transformers - 论文翻译


下一篇:Docker的常用命令