VS Code中C++程序的调试(Debug)功能

有一个.vscode文件,存放当前工作区相关配置文件的目录。

launch.json

{
    
    
    "version": "0.2.0",
    "configurations": [
        {
    
    
            "name": "gcc.exe - 生成和调试活动文件",  // 该调试任务的名字,启动调试时会在待选列表中显示
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,  // 这一项控制是否在入口处暂停,默认false不暂停,改为true暂停
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,  // 这一项控制是否启动外部控制台(独立的黑框)运行程序,默认false表示在集成终端中运行
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",  // 调试器路径,必须与你自己的电脑相符
            "setupCommands": [
                {
    
    
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: gcc.exe build active file"  // 调试前的预执行任务,这里的值是tasks.json文件中对应的编译任务,也就是调试前需要先编译
        }
    ]
}

tasks.json

{
    
    
    "tasks": [
        {
    
    
            "type": "shell",
            "label": "C/C++: gcc.exe build active file",  // 编译任务的名称,跟上面preLaunchTask的值对应
            "command": "D:/mingw64/bin/g++.exe",  // 编译器的路径,须跟你自己的电脑相符
            "args": [  // 编译器执行时的参数,跟手动编译时输入的内容基本一致,主要是多了-g参数,以加入调试信息
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
    
    
                "cwd": "D:/mingw64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
    
    
                "kind": "build",
                "isDefault": true
            }
        }
    ],
    "version": "2.0.0"
}

编译文件

在cmakelists.txt文件中需要设置编译选项:

set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11 -pthread -g")

然后编译文件,按这个按钮,选择要调试的可执行的文件,然后就可以对项目进行调试了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qaaaaaaz/article/details/132254370