使用 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 ...
随机推荐
- jmeter压测遇到的问题
一.今天压力测试时,开始12秒后出现了很多异常, 都是 java.net.NoRouteToHostException: Cannot assign requested address. 1.首先我这 ...
- 吴裕雄--天生自然KITTEN编程:逃脱升天
- python中使用xlrd读excel使用xlwt写excel
原文地址 :http://www.bugingcode.com/blog/python_xlrd_read_excel_xlwt_write_excel.html 在数据分析和运营的过程中,有非常多的 ...
- Android APP性能及专项测试(个人整理)
移动测试. Android测试 .APP测试 Android篇 1. 性能测试 Android性能测试分为两类:1.一类为rom版本(系统)的性能测试2.一类为应用app的性能测试 Android ...
- 确认下眼神!有没有遇上对的工资(测试leader)
屏蔽敏感信息,直接上图: ▼
- doctrine queryBuilder
为了能够方便的切换数据库,我们有必要使用doctrine的queryBuilder, 但是估计很多人都是不喜欢的(我也是),之前尝试用的时候,发现在doctrine定义的SELECT语法中并没有CON ...
- SQL JOIN 和 UNION 用法
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P ...
- ypoj 2286 佳佳买菜
题目名称:佳佳买菜 描述 佳佳是我们的ACM社团的副社长,她感觉得自己没存在感,so-由于实验室要聚餐了,佳佳决定买点菜,来做菜给大家吃.佳佳喜欢吃娃娃菜,于是她来到买菜的地方.佳佳:我要10斤娃娃菜 ...
- Runtime常见使用
一些语法 更改对象的类/获取对象的类 1234 CustomClass *class1 = [[CustomClass alloc]init];Class aclass =object_setClas ...
- 当鼠标hover的时候,使用tip将overflow:hidden隐藏的文字显示完全
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...