windows下vscode调试cpp工程

10 篇文章 0 订阅
5 篇文章 1 订阅

更详细内容请参考:https://www.bilibili.com/video/BV1fy4y1b7TC?p=24&t=404
或关注作者的公众号:VSCode


ubuntu版本


vscode调试g++工程

有两种调试方式,推荐使用第二种。

1、使用终端生成好的.exe文件

1、调试的话需要文件夹下生成带有调试信息的可执行文件,在终端使用如下命令

 g++ -g .\main.cpp .\swap.cpp  -o mymutilswap

其中-g代表生成带有调试信息的.exe文件

2、点击调试按钮

image-20201105164742021

生成launch.json文件。

  • 下面对launch.json文件进行解释
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",            // 可执行文件名,这个文件必须是已经存在的(可以使用Task.json中生成)
            "args": [],         // 调试参数
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,                // 调试的时候打印在哪,默认为false。调试控制台
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Strawberry\\c\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],

            
            // "preLaunchTask": "C/C++: g++.exe build active file"             // 开始调试之前的工作 ,这里的名称对应于Task.json里面的label 
        }
    ]
}

如果是使用的命令行生成好的.exe文件,只需要注意这条命令和.exe文件名是否匹配

"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",            // 可执行文件名,这个文件必须是已经存在的(可以使用Task.json中生成)

然后点击F5,就可以开始调试了。

2、使用task.json调试

先使用命令行生成带有调试信息的.exe文件,难免有些不方便,特别是针对频繁修改源代码的情况。

因此推荐使用task.json来生成.exe文件

说白了,就是使用task.json将上述的终端命令包含进去。对于修改的代码,可以直接调试,vscode会根据launch.json调用task.json,自动生成.exe文件

  • 下面介绍task.json的配置
{
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: g++.exe build active file",        // 这个Task的名称
            "command": "C:\\Strawberry\\c\\bin\\g++.exe",
            "args": [
                "-g",                                       // 带有调试信息
                "${file}",          // 源文件
                "swap.cpp",
                "-o",               // 输出文件名
                "${fileDirname}\\${fileBasenameNoExtension}.exe"            // 生成的可执行文件
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ],
    "version": "2.0.0"
}

我们将所需的命令行放在"arg"里面:

            "args": [
                "-g",                                       // 带有调试信息
                "${file}",          // 源文件
                "swap.cpp",
                "-o",               // 输出文件名
                "${fileDirname}\\${fileBasenameNoExtension}.exe"            // 生成的可执行文件

保证

1、最终生成的文件和launch.json中生成的文件是同一个。

2、task.json的"label"和launch.json中的"preLaunchTask"是一个即可。

vscode调试cmake工程

使用cmake进行构建cpp工程,主要分为一下几步:

1、编写CMakeList.txt

project(my_cmake_swap)

add_executable(${PROJECT_NAME} main.cpp swap.cpp)

2、按下F1,配置cmake

image-20201105205759466

生成build文件夹

image-20201105210958615

3、编写launch.json文件

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\build\\my_cmake_swap.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            // "preLaunchTask": "C/C++: g++.exe build active file"
            "preLaunchTask": "Build"

        }
    ]
}

4、编写task.json文件

{
    "version": "2.0.0",
    
    "options": {
        "cwd": "${fileDirname}/build",
        "type": "shell"
        
    },

	"tasks": [

        
        {
            "type": "shell",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "swap.cpp",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: \"C:\\Program Files\\mingw64\\bin\\g++.exe\""
        },

        {
            // "type": "shell",
            "label": "cmake",
            "command": "cmake",
            "args": [
                ".."
            ]
        },

        {
            // "type": "shell",
            "label": "make",
            "command":"mingw32-make.exe",
            "args": []
        },

        {
            "label": "Build",
            "dependsOn":[
                "cmake",
                "make"
            ]
        }
    ]


}

其中

    "options": {
        "cwd": "${fileDirname}/build",	// 代表进入目录
        "type": "shell"					// task的任务类型,"shell"代表在终端执行
        
    },

调试结果

image-20201105211504486

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tech沉思录

点赞加投币,感谢您的资瓷~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值