1.debug环境重要性

对于开发代码来说,代码的可跟踪调试还是很重要的,能帮助我们快速定位发现问题,提高代码的健壮性,并提高平时工作效率。正好最近开发c++代码,使用了vscode,记录一下vscode上搭建debug环境的经过。虽然看着很简单,其实还是花了一些时间的。

2.vscode是什么

vscode是Microsoft开发并且开源的,全名是Visual Studio Code,但实在太冗长,所以一般叫vscode。微软官方给他的定义是一个免费开源的跨平台编辑器。强调“编辑器”的原因,应该主要是vscode不想成为一个真正意义上的继承开发环境,即IDE。
vscode相比VisualStudio,最主要的有点就是没有VisualStudio那么“重”。其目标是提供一个可以快速编码-编译-调试的“编辑器”。因此与VisualStudio这种真正的IDE相比,就显得比较"轻"。正是因为他的轻,所以现在越来越受欢迎。

3.tasks.json

vscode新建一个项目以后,会自动生成一个.vscode文件夹,该文件夹刚开始是空白的,但是我们可以在里面配置一些文件,其中最重要的就是tasks.json与launch.json。其中,tasks用于在launch前执行编译任务,而launch则是用来读取可执行文件。

我们先来看配置的tasks.json文件

{"version": "2.0.0","tasks": [{"type": "shell","label": "build","command": "/usr/bin/clang","args": ["-fdiagnostics-color=always","${file}","-o","${fileDirname}/../build/${fileBasenameNoExtension}","-g"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault":true},"detail": "编译器: /usr/bin/clang"}]
}

重点分析一下上面的参数。
type:表示任务执行的shell任务。
label:表示任务的名称是build,注意要区分大小写,而且要注意的是,后面的launch中也会调用该名字。
command:执行的命令,因为是mac机器,所以使用的是clang。
args: command后面的参数,注意因为我们需要debug,所以需要加上-g参数。

4.launch.json

直接贴上launch的配置

{// 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": "(lldb) Launch","preLaunchTask": "build","type": "cppdbg","request": "launch","program": "${fileDirname}/../build/${fileBasenameNoExtension}","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "lldb"}]
}

重点看下如下几个参数:
preLaunchTask:注意与前面tasks中配置的label名字相同!
program:表示可执行文件的地址,注意业务前面tasks中args配置的输出文件地址相同!

5.调试

上面配置完成以后,在vscode中,点击左侧的运行与调试按钮(带小虫子图标那个),然后选择(lldb) Launch,该调试名字即为前面launch文件所配置的name。

然后点击运行按钮,会出现下面的debug界面

注意看下面的终端,里面输出的命令行,就是我们前面tasks.json里配置的command+args组成的命令行。
上面则会有调试窗口出现,依次为继续按钮,单步调过按钮,单步调试按钮,单步跳出按钮,重启按钮以及结束按钮。我们就可以根据自己的需要进行接下来的调试。
箭头指向的高亮行,则是代表代码当前运行行。

在编辑区的左侧,可以查看变量,调用堆栈等常规信息。

6.注意与code-runner配置的区别

当时我尝试了很久没有成功的原因之一,就是因为安装了code-runner的插件。一般在vscode中都会安装code-runner用来执行程序,里面也会有相关配置。比如我再settings.json中,关于code-runner运行c++代码的配置如下:

"code-runner.executorMap": {"cpp": "cd $dir && clang++ -g $fileName -o ../build/$fileNameWithoutExt && $dir/../build/$fileNameWithoutExt",...}

如果我们点运行按钮,实际执行的是code-runner里的相关配置。而我们debug的时候,与code-runner中的配置无关,需要在前面的tasks与launch中做好正确的配置。

mac vscode配置c++ debug环境相关推荐

  1. Mac VSCode配置C语言环境(可以调试)

    Mac VSCode配置C语言环境 c_cpp_properties.json tasks.json launch.json 新建一个文件夹,用vscode,然后再新建一个test.c文件. #inc ...

  2. VSCode配置Swift 开发环境

    VSCode配置Swift debug环境 `swift`初始化 项目 LSP 插件 Debugger 引用 用Swift写小功能,或者仅仅测试一下语法,然后每次打开 xcode 时间太久,我就想能不 ...

  3. mac系统vscode配置c/c++环境

    mac系统vscode配置c/c++环境 本文介绍mac系统下vscode的安装以及c环境的配置: 本文特点: 1. 可以在vscode自带的终端里显示c程序运行结果. 2. 调试c程序时,程序中需要 ...

  4. 【转】vscode配置C/C++环境

    转自:vscode配置C/C++环境 - 知乎 VS Code配置 作者:谭九鼎 链接:Visual Studio Code 如何编写运行 C.C++ 程序? - 知乎 有改动.个人按照步骤后,做到复 ...

  5. VSCode配置Python开发环境!

    VsCode系列:VSCode配置Python开发环境! 今天博主跟大家聊一聊如何使用VsCode系列:VSCode配置Python开发环境!不喜勿喷,如有建议欢迎补充.讨论! 关于安装和汉化可以观看 ...

  6. 现代c++:MacOS VSCode配置c++17环境

    时代在发展,本科的时候学的c++已经不是现在的c++了,于是重新学习c++17.今天第一次用VSCode运行c++ 17,发现需要配置一下编译器才能运行. 现代c++:MacOS VSCode配置c+ ...

  7. VSCode配置python调试环境

    本文转载自: https://www.cnblogs.com/qdscwyy/p/7756694.html 作者:qdscwyy 转载请注明该声明. 目录 VSCode配置python调试环境 1.下 ...

  8. vscode中装js解释器_h5学习记录(1)--vscode配置js开发环境

    文笔不是很好,第一次写东西,主要为了记录h5的学习过程.今天记录的是vscode配置js开发环境. 什么是VSCode Visual Studio Code (简称VS Code/VSC) 是一款于2 ...

  9. 用VScode配置Python开发环境引用

    引用:用VScode配置Python开发环境 - 简书 前言 VScode是一个相当优秀的IDE,具备开源.跨平台.模块化.插件丰富.启动时间快.颜值高.可高度定制等等优秀的特质,不愧是微软爸爸的私生 ...

  10. VSCode配置JAVA开发环境,java初级面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

最新文章

  1. 单目视觉里程计性能估计
  2. kubenerte启动_Kubenertes资源分配之Request和Limit解析
  3. c语言请编写函数mygets,c语言中请编写函数mygets和myputs,其功能分别与gets与puts相同,函数中用getchar和putchar读入和输出字符...
  4. 使用arm-linux-androideabi-addr2line 定位Unity Android 段错误
  5. 【跃迁之路】【451天】程序员高效学习方法论探索系列(实验阶段208-2018.05.02)...
  6. 公共链接url出错_SEO优化技巧:关于URL的优化方法
  7. go-文件读写-db
  8. Java中堆、栈、常量池等概念解析
  9. 1081. 不同字符的最小子序列
  10. visio画图常见问题解答
  11. 985翻译硕士都在找的这款软件
  12. 迭代最近邻ICP算法
  13. 明明办了100M宽带,下载速度为何不到10M/s?
  14. xp系统从u盘启动计算机,教你怎么用U盘安装Windows XP系统
  15. 智慧树omg期末测试答案_智慧树求职omg第十五章节测试答案
  16. VASP - Bader Charge Analysis
  17. EasyExcel解析excel(合并单元格和未合并)
  18. linux kvm 命令行安装Windows xp虚拟机
  19. 江南style印证法国大预言家诺查丹玛斯世界末日预言?
  20. 3211. 【SDOI2013】随机数生成器

热门文章

  1. Linux课程---3、Linux远程登录和传输(操作Linux服务器软件)
  2. 电脑管理器地址栏 按右键会有的功能
  3. Puppet apply命令参数介绍(五)
  4. 《软件设计师》考点分布
  5. nginx 服务器重启命令,关闭(转)
  6. 关于Myeclipse自带JDK与本机安装JDK的的区别
  7. 数据库性能指标 2005-04-06 19:36:14(转载)
  8. WPF/Silverlight深度解决方案:(四)基于像素的图像合成(For WPF)
  9. 10.31,11.1外出纪要
  10. mysql用shell脚本链接数据库进行操作