关于vscode的断点调试功能

工具准备:vscode node.js Ubuntu

相信很多朋友在使用vscode时都是使用C/C++和CompileRun这俩插件来编写C/C++文件,然而这俩插件不支持断点调试(vs2019支持断点调试但体积过于庞大),在实际开发中会带来不便,接下来这篇帖子将简略叙述下给vscode添加调试功能。(基于wsl的调试)
准备步骤可参考这位大佬的帖子

(VS Code 面向小白但可能问题一堆的安装指南)
首先在微软商店搜索Ubuntu并下载安装,安装之后等待Ubuntu内部处理。然后先更换Ubuntu的镜像源为科大或者清华,具体教程可访问下面链接

(Ubuntu - WSL系统更换国内源【WSL第三弹】 - 云+社区 - 腾讯云)

然后输入更新软件列表的命令

sudo apt-get update
sudo apt-get upgrade

然后再输入安装C/C++的开发包的命令

sudo apt-get install gcc g++ gdb

然后在vscode安装插件,推荐安装一个叫 C/C++ Extension Pack的插件包

安装完成后,打开Ubuntu终端,输入

code .

这里Ubuntu会自动获取支持vscode的相关组件,安装完成后,再输入一次刚才的指令,此时vscode会自动打开,然后随便写个hello,world的cpp文件,键入"Ctrl+Shift+p"打开命令面板,输入"C/C++ edit configuration",选择有"json"的那一项

然后这是微软官网给出的推荐配置,一般来说粘贴复制上去即可
这里是微软官网的相关教程
(Get Started with C++ and Windows Subsystem for Linux in Visual Studio Code)

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

然后再打开命令面板,输入task,选择任务:配置默认生成任务,使用模板创建task.json,将里面内容替换为

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
    //依旧是微软官网的(逃)
}

保存文件后,设置好断点按F5就可以开始调试了,按F5 有个提示,选择"C++(GDB/LLDB)",选择 “g++ build and debug active file”,接下来就可以进行断点调试了,输出结果可以在下方终端窗口查看输出结果。
类似的帖子在csdn上很多,我在这里综合了其他帖子和我自己搭建的过程总结出这篇帖子。如果在搭建编译环境过程中出现问题,可以在相关技术网站查找问题并尝试解决(软工人必备技能)

这是本蒟蒻的第一篇原创帖子,如有疏漏,欢迎巨佬指出(逃)。

2赞

感觉这样还是太繁琐了,这种重复性工作能避免还是尽量避免。Compile Run 是用单文件编译直接跑的,灵活性太低。我一般用 Native Debug 这个插件去搞,可以自动生成 launch.jsontasks.json,也支持 gdblldb,这样断点调试和编译器设置的问题就解决了。


但很多时候还是不太够用的,这种只能给你默认出一个 model,很简单比如加个 O3 优化还是需要自己来加,所以解决调试问题还只是第一步,明白 config 的各环节才是用得爽的基础。

1赞
粤 ICP 备 2020080455 号