Vscode 如何配置debug

  • 通用配置
    • 举例如何debug go
    • 各配置变量的含义
  • 关于debug C/C++
    • 总结各文件作用
    • 具体流程

VScode是一款非常好用的代码编辑器,还拥有强大的在线扩展插件。甚至可以进行代码的debug,整理了下配置过程遇到的问题分享出来。
我使用的windows平台vscode版本为V1.56。

通用配置

VS Code内置了对Node.js运行时的调试支持,可以调试JavaScript、TypeScript或JavaScript语言。
要调试其他语言(包括PHP, Ruby, Go, c#, Python, C++, PowerShell等)时,在VS Code扩展中寻找调试器扩展,或者在顶级运行菜单中选择安装额外的调试器。
确定安装可以编译调试的扩展或软件再进行以下步骤:
右击工程文件夹使用VScode打开。

打开需要编译、运行的文件,点击顶部菜单->运行->添加配置…选择需要debug的类型,之后根据语言及即可在 .vscode文件夹下生成launch.json文件。生成的json文件对整个文件夹和子文件夹生效。

举例如何debug go

以go语言为例,路径切换至当前工程文件夹。首先安装调试软件推荐使用dlv,终端中输入

 go get -u github.com/go-delve/delve/cmd/dlv# 未生成mod还得添加mod才能调试  go mod init yourProjectName

一切准备就绪后,点击上述步骤生成launch.json文件,此处会让你选择调试包还是附着到本地进程或远程服务器调试。

选择默认的调试package,这里打开生成的默认json

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

需要添加新的配置直接点击右下角即可,"name"的值为左标签页调试器的名字用于区分用。“type”语言类型设置为go,vs code 用于设定调试代码扩展类型。”mode“可以设置为 auto, debug, remote, test, exec 中的一个。”program“调试程序的路径(绝对路径),这里使用workspaceFolder说明对整个工作区目录文件进行调试。

各配置变量的含义

其中有许多vscode定义的变量,这里列出常用的:

  • ${workspaceFolder} - 在VS Code中打开的文件夹路径
  • ${workspaceFolderBasename} - 在VS Code中打开的文件夹的名称没有任何斜杠(/)
  • ${file} - 当前打开的文件名
  • ${fileWorkspaceFolder} - 当前打开的文件的工作区文件夹
  • ${relativeFile} - 当前打开的文件名相对于workspaceFolder
  • ${relativeFileDirname} - 当前打开的文件的目录名相对于workspaceFolder
  • ${fileBasename} - 当前打开的文件的基名
  • ${fileBasenameNoExtension} - 当前打开的文件的基名没有文件扩展名
  • ${fileDirname} - 当前打开文件的目录名
  • ${fileExtname} - 当前打开的文件的扩展名
  • ${cwd} - 任务运行器启动时的当前工作目录
  • ${lineNumber} - 当前选中的行号在活动文件中
  • ${selectedText} - 活动文件中当前选定的文本
  • ${execPath} - 运行VS Code可执行文件的路径
  • ${defaultBuildTask} - 默认构建任务的名称
  • ${pathSeparator} - 操作系统用于分隔文件路径中的组件的字符
  • ${pathSeparator} - 在macOS或linux系统为/, 在Windows上为\

关于debug C/C++

该文件设置debug的各项配置根据语言的不同,设置也不尽相同。这里介绍c/c++的具体配置流程。

总结各文件作用

与其他语言类似的,debug的配置文件也是生成在.vscode文件夹中。
c/c++程序配置一般有三个文件:

  • tasks.json(如何编译生成可执行程序)
  • launch.json(调试设置)
  • c_cpp_properties.json(编译器路径和vscode感知设置)
    其中c_cpp_properties非常坑,由于我使用了自己写的头文件在c_cpp_properties.json的includePath项目配置各种路径类型都不生效,后面才看懂这个只是让vscode识别头文件该跳转的路径而已,真正要添加外部库或头文件的话要么放在系统默认库、头文件路径,要么在task.json中配置生成。

具体流程

c/c++代码需要先编译链接生成可执行程序(tasks.json),再使用gdb调试(launch.json),c_cpp_properties.json设置c/c++使用语言标准例如c++11等。注意:调试前确保系统环境已配置g++、gdb。验证方法:
要检查您的 Mingw-w64 工具是否正确安装和可用,请打开新的命令提示并键入:
g++ --version
gdb --version
以此工程文件夹为例,main函数调用了lib文件夹下的stu_rw.h文件

打开main.cpp文件,点击顶部菜单->终端->配置默认生成任务,选择使用g++生成活动文件。打开生成的task.json文件

{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe","args": ["-g","-Wall",        //显示全部详细警告"-std=c++11",   //支持C11"${file}",                "-I","${workspaceFolder}\\lib","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "编译器: \"C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe\""}]
}

其中args选项即为g++编译链接选项,如上所示我已经添加了"-I"相关参数添加头文件路径,c11标准。静态库链接等就放-o选项后,除最后一行配置文件每行都得加逗号。之后打开main.cpp点击顶部菜单->终端->运行生成任务,看是否生成成功。
之后设定debug选项,点击顶部菜单->运行->添加配置,选择gdb、之后选g++生成默认配置。下面展示配置的说明:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "g++.exe - 生成和调试活动文件",  // 配置名称,将会在启动配置的下拉菜单中显示"type": "cppdbg","request": "launch",                 // 请求配置类型,可以为launch(启动)或attach(附加)"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",   // 将要进行调试的程序的路径"args": [],                                // 程序调试时传递给程序的命令行参数,一般设为空即可"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe 生成活动文件"}]
}

如果您想要对 C/C++扩展进行更多控制,c_cpp_properties.json将配置如编译器的路径,include路径、C++标准(默认值为 C++17)等等。
通过命令终端(Ctrl+Shift+P)输入>c/c++,有两个选项一个是直接配置json一个是通过UI界面配置。
这里的C/C++ 配置UI页面,基本保持默认即可。注意这里的配置编辑器是给vscode和扩展使用的,不影响task.json来配置真正生成可执行程序的过程。

Vscode 如何配置debug相关推荐

  1. 在vscode中怎样debug调试go程序

    随着互联网时代的飞速发展,我们编码使用的开发利器也在不断更新换代,古话说工欲善其事必先利其器,对于Java开发者而言,eclipse和idea这两款神器各有千秋,因自己的爱好可以选取不同的IDE,但是 ...

  2. ftp文件传输 vscode_在vscode中配置ftp

    在vscode中配置ftp 安装ftp插件 在vscode扩展中搜索 FTP-Sync 并安装. 启用插件 在vscode 项目中按下F1按钮启动命令行工具,输入ftp ,选择 FTP-Sync:in ...

  3. Mac下安装VScode和配置C++环境

    Mac下安装VScode和配置C++环境 1. 下载.安装VScode软件 2. 配置C/C++环境 参考文章 1. 下载.安装VScode软件 VScode的下载地址: https://code.v ...

  4. VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了

    前言 Visual Studio Code 是一个轻量级功能强大的源代码编辑器,支持语法高亮.代码自动补全(又称 IntelliSense).代码重构.查看定义功能,并且内置了命令行工具和 Git 版 ...

  5. golang 同一个包中函数互相调用报错 undefined 以及在 VSCode 中配置右键执行整个包文件

    1. 代码结构 demo 文件夹下有两个文件,分别为 hello.go 和 main.go ,结构如下: wohu@wohu:~/GoCode/src$ tree demo/ demo/ ├── he ...

  6. golang select default continue_Golang+VSCode环境配置

    安装golang.git golang官网下载Go语言安装包,安装.默认在 C:Go 官网下载git,安装.默认在C:Program FilesGit 配置环境变量 用户环境变量 新建 GOBIN 值 ...

  7. Go语言vscode环境配置

    Go语言vscode环境配置 此教程在GO已经安装成功的前提下. 安装vscode扩展 在vscode扩展里面搜索go,然后下载扩展. 安装go 插件 在$GOPATH目录下创建bin,pkg,src ...

  8. PhpStorm 配置debug断点调试

    以下方法可以不用下载Xdebug helper浏览器扩展插件,也不需配置Debug Configurations. 环境 phpstudy_pro 小皮集成环境 Apache 2.4.39 php 7 ...

  9. vs在linux下的环境搭建,linux下vscode环境配置

    文章目录 linux下vscode环境配置 编译器,调试器安装 sudo apt update #通过以下命令安装编译器和调试器 sudo apt install build-essential gd ...

  10. vscode中配置LeetCode插件的教程(愉快刷题)

    转载于脚本之家,原链接为https://www.jb51.net/article/183720.htm 大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器. ...

最新文章

  1. java指导手册,Java 注解指导手册 – 终极向导
  2. redis的数据类型及设置方法
  3. Java的3大框架都学习什么呢?
  4. ACM-ICPC 2019 山东省省赛 C Wandering Robot
  5. webstrom打开通过顶部浏览器打开网页,被跳转到默认主页
  6. ldap2.8.2_Spring LDAP 2.0.0发布
  7. P1078 文化之旅[最短路]
  8. mysql伪表 dual_Oracle系列:(5)select子句
  9. 手机尺寸相关的概念 +尺寸单位+关于颜色
  10. pytorch 与 numpy 的相互转换
  11. JDK18 Java 18 拥有 9 个新特性
  12. vb treeview icon 可以使用位图吗_table标签经典案例,综合使用行合并与列合并实现html网页表格【2020网页综合笔记03】...
  13. julia常用矩阵函数_Julia语言入门
  14. MSOCache文件夹能否删除?
  15. LeetCode | 0665. Non-decreasing Array非递减数列【Python】
  16. 安卓手机投屏软件_直播教程 | 安卓手机投屏队伍语音解决方案1
  17. html5 图片拱形旋转,CSS DIV拱形边框的图片
  18. JSP WAP 开发
  19. CS0012 错误。必须添加对程序集”xxxxx,Version=4.0.0.0,Culture=neutral,PublicKeyToken=xxxxxxx“的引用
  20. 从零开始编写自己的C#框架(8)——后台管理系统功能设计

热门文章

  1. 计算机应用中格式刷怎么用,如何连续使用格式刷【搞定手段】
  2. Css3之画菱形和平行四边形
  3. 年薪15万的80后小本科:只要6分钟,告诉你少走6年弯路
  4. 第14期《学海无涯乐作舟》12月刊
  5. Windows10服务优化
  6. 路由在电话网和计算机网中的区别,计算机猫和路由器之间有什么区别
  7. 官方文档-Linux服务器集群系统(一)
  8. 社工小组 计算机小组活动,《社工小组活动常用游戏整理》
  9. input内加小图标
  10. 新一代智能会议中控系统