使用 VSCode 在 Mac 上配置 C/C++ 调试环境
Background
VSCode是微软开发的一款开源代码编辑器,具有可拓展性强,多语言支持,跨平台等优点,在不同的个性化配置下几乎可以用作所有的轻量级开发。我在初学C的时候也使用的是类似于Xcode、Visual Studio等大型IDE来新建一个C语言工程,编写一个仅含有main函数的文件,显得过于大材小用了。后来学校推荐使用的Code::Blocks和Dev C++也已经多年没有更新,且界面古老,对Mac的支持也很差。直到使用了VSCode并正确配置了之后,我似乎找到了当下最适合用于学习C/C++的代码编辑器。
下载与安装
https://code.visualstudio.com/

配置调试环境

此时你已经可以新建代码文件并编辑。但为了能在终端中直接调试代码,我们还需要配置Launch.json和task.json。
配置 launch.json
进入左侧的调试页面,选择[添加配置...],就会自动在你的工作目录下新建一个.vscode文件来存放你的调试配置。这里我们选择C/C++: (lldb) Launch。

对于这里的配置,官方的文档里(https://go.microsoft.com/fwlink/?linkid=830387 )有详细的说明。对于一般用户,我在这里修改成了如下配置。
{ "preLaunchTask": "build c++", "name": "Launch C++", "type": "cppdbg", "request": "launch", "program": "{fileBasenameNoExtension}.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "lldb", }
大部分保持默认,需要修改的地方如下:
preLaunchTask:手动添加的参数,稍后我们会自行编辑的一个任务,其作用是将当前文件编译成可执行文件。
program:需要和稍后配置的task相对应,即打算运行的程序。需要设置为二进制程序目录而不是源代码文件。
externalConsole:设置为true来在外置终端(macOS自带的)中运行程序。该选项设置为false的话会在内置终端中运行,无法输入数据(应该有解决方法,但我目前没有发现)
如果你需要打开日志来排查问题,加入以下内容:
"logging": {
// "engineLogging": true,
"trace": true,
"traceResponse": true,
}
FontSize Shortcuts:可以使用Command + +/-快速调整编辑器中文本字体大小而不影响其他部分的大小。
CodeRunner:免配置一件快速运行多种语言的代码,不支持断点调试。
VSC Netease Music:网易云音乐的VSCode插件?实用性需考证,更像一个玩具。不过很好玩。

Markdown All in One:
增强的Markdown预览,支持了LaTeX公式,并可以格式化美化源文件。
sftp:玩服务器的话可以试一试,小规模操作可以丢掉FileZilla了。直接使用VSCode编辑服务器文件简直太棒了。
Markdown PDF:Markdown党的福音,可以利用Chromium内核将md导出美观的pdf文件。
Nasc VSCode Touchbar:自定义TouchBar上的功能,可以添加注释、批量重命名、跳转定义等功能,更加接近Xcode的TouchBar体验。
这里是我觉得一些比较不错的插件,会有极小几率持续更新。
一些值得推荐的插件
VSCode同样提供具有GUI的Linux系统版本。如果你使用虚拟机并在虚拟机中共享同一个工作文件夹,lldb的调试配置文件可能会无法运行。这时候只需要将你的Launch.json中的"MIMode"配置由lldb改成gdb即可。
对于 Linux 的更改
在Push更改的时候,会需要输入你的GitHub账户和密码。如果想要保存账户和密码,在终端中使用git config --global credential.helper store即可保存你的凭据。
git config --global user.name "用户名" git config --global user.email "用户邮箱"
提交的时候如果你没有配置过你的用户名和密码,可能会报错。这时候使用快捷键control+`打开终端,配置一下默认用户名和邮箱:

使用GitHub Desktop可以可视化地将代码托管到GitHub。但VSCode也内置了源代码管理。大多数基本操作都可以在这里完成。你还可以下载Git History插件来查看提交情况。如果该文件夹还没有一个Git仓库,只需要点击初始化就可以了。
将你的文件夹托管到 GitHub
(摔
后来其实解决方案很简单。文件目录里不要有空格就好了。
前阵子会很莫名其妙地遇到部分c语言文件中的断点无法正常停止的问题。所有断点打开后都会提示Unverified Breakpoint,但有些文件却可以正常打断点。搜索许久未果,为此还特地开了一个GitHub的的issue(https://github.com/Microsoft/vscode-cpptools/issues/3246)。
无法设置断点的解决方案
一些 Tips
此外,在商店市场里还有许多配色主题和图标主题可以选择。

之前Visual Studio特别吸引人的一点就是在输入完一行代码后,编辑器会自动帮我在诸如运算符左右的地方加上空格并整理大括号的位置。这一Auto Formatting功能在VSCode下也得到了保留。可以按需在设置里开启Format On Paste, Format on Save, Format On Type的选项。
个性化

配置好以上两个文件后,你应该就可以在调试界面运行程序并设置断点、监视变量了。如果出现变量未验证(Unverified Breakpoint)的问题,文末有一个常见的解决方案。
args:即命令行运行参数。我在这里使用的C17标准。-o下面的一个参数即为输出目录。其中${fileBasenameNoExtension}表示没有拓展名的文件名。
command:g++来编译C++,gcc来编译C
label:任务名称,和launch.json对应
大多数配置保持默认即可。我这里修改的地方主有:
{ "label": "build c++", "type": "shell", "command": "g++", "args": [ "{workspaceFolder}/temp/${fileBasenameNoExtension}.out", "-g" ], "group": "build", "presentation": { "echo": true, "focus": false, "panel":"shared", "showReuseMessage": true, "clear": false, "reveal": "silent" }, },
在该文件里,我们配置一个名为build c++的task,将文件编译到工作目录下temp文件夹下的对应文件(你也可以自行配置生成目录,但需要和上面的launch.json相对应。我的build c++配置如下:

对于默认快捷键,点击command+P并输入>task来新建一个生成任务。
配置 task.json
这个运行任务的意思就是首先运行一个build c++的task来,得到可执行文件,接着再运行并调试这个文件。
来源:https://billc.io/2019/03/mac-vscode-guide
使用 VSCode 在 Mac 上配置 C/C++ 调试环境的更多相关文章
- Delphi for iOS开发指南(1):在Mac上配置你的开发环境
http://cache.baiducontent.com/c?m=9d78d513d99516f11ab7cf690d678c3b584380122ba7a0020fd18438e4732b4050 ...
- mac 上配置flutter开发环境
(ios,Android,Xcode,Android Studio,VScode,IDEA) 1)安装Flutter SDK 2)iOS 环境配置 3)Android Studio配置 4)VS co ...
- 在Mac上配置adb命令
在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件 ...
- 【GitHub】在Mac上配置/使用Github
以前一直听说过Github,但是自己一直不会用.最近不是太忙,于是想捣鼓捣鼓Github,没想到用了将近3个小时,才在Mac上配置成功. 首先简单介绍一下Git和Github 集中化的版本控制系统( ...
- Mac上配置GTK环境
Mac上配置GTK环境 安装command line工具, 如果安装了Xcode, 就直接跳过该步骤 安装Homebrew 使用brew install pkg-config 使用brew insta ...
- mac上配置php开发环境
玉忠之前在我的mac上配置过,当时项目不能区分大小写,所以就没成功,我现在在他得基础上继续配置,希望成功. 教程:http://my.oschina.net/joanfen/blog/171109 以 ...
- 在MacOs上配置Hadoop和Spark环境
在MacOs上配置hadoop和spark环境 Setting up Hadoop with Spark on MacOs Instructions 准备环境 如果没有brew,先google怎样安装 ...
- mac上搭建appium+IOS自动化测试环境(二)
上一篇: mac上搭建appium+IOS自动化测试环境(一) 9.安装appium-xcuitest-driver依赖 进入WebDriverAgent安装目录,运行bootstrap 首先进入目录 ...
- mac下配置Node.js开发环境、express安装、创建项目
mac下配置Node.js开发环境.express安装.创建项目 一.node.js的安装 去官网下载对应的平台版本就可以了,https://nodejs.org 二.express安装 sudo n ...
随机推荐
- django自带数据库sqlite
python manage.py makemigrations # 记录关于models.py的所有改动,但是还没有作用的数据库文件中 python manage.py migrate # 把mode ...
- 很全很全的 JavaScript 模块讲解
模块通常是指编程语言所提供的代码组织机制,利用此机制可将程序拆解为独立且通用的代码单元.所谓模块化主要是解决代码分割.作用域隔离.模块之间的依赖管理以及发布到生产环境时的自动化打包与处理等多个方面. ...
- 前端页面设计常见的30个CSS选择器
1. * --> 通配符选择器 * { margin: 0; padding: 0; } 星号符会选择页面每个元素.很多开发者用它把所有margin和padding归零.这当然是快捷测试 ...
- 网易与Google合作,于GDC开幕首日发布开源UI自动化测试方案
[TechWeb报道]美西时间3月19日,在GDC开幕第一天的Google开发者专场,Google发布了一款由网易研发的UI自动化测试方案:Airtest Project. Google方面评价,这可 ...
- python IO多路复用版FTP
需求: 实现文件上传及下载功能 支持多连接并发传文件 使用select or selectors
- String.slice
String.slice(start, end)start从字符串的哪个index开始截取 默认值0 如果为负值,则从字符串的尾部向前倒推indexend到从字符串的哪个index结束截取 默认值st ...
- 一、HTTP和HTTPS的基本概念
1HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少. 2HT ...
- elasicsearch数据自动清理脚本
elasticsearch随着保存的数据越来越多,磁盘占用越来越大,有必要进行定期自动清理. 直接上脚本 cat es-index-clear.sh #/bin/bash #查看索引信息 #curl ...
- Hexo+Git一个小时快速搭建个人博客
搭建本地环境:Hexo框架 Hexo为何物 Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用Markdown解析文章,并瞬间利用靓丽的主题生成静态网页.其中,Markdown是一个用于将普通 ...
- SQL JOIN 和 UNION 用法
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P ...