使用 VSCode 在 Mac 上配置 C/C++ 调试环境

摘要:
直到使用了VSCode并正确配置了之后,我似乎找到了当下最适合用于学习C/C++的代码编辑器。下载与安装https://code.visualstudio.com/配置调试环境首先你需要在你的硬盘上新建一个文件夹用于存放你的代码文件。在新建一个C或者C++文件后会自动提示安装ExtensionForC/C++Support。CodeRunner:免配置一件快速运行多种语言的代码,不支持断点调试。直接使用VSCode编辑服务器文件简直太棒了。但VSCode也内置了源代码管理。这一AutoFormatting功能在VSCode下也得到了保留。其中${fileBasenameNoExtension}表示没有拓展名的文件名。

Background

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

下载与安装

https://code.visualstudio.com/

使用 VSCode 在 Mac 上配置 C/C++ 调试环境第1张

配置调试环境

首先你需要在你的硬盘上新建一个文件夹用于存放你的代码文件。我这里使用的是LearningRepo。在新建一个C或者C++文件后会自动提示安装Extension For C/C++ Support。你也可以在插件页手动安装。如果你喜欢中文界面,直接在插件中搜索Chinese就可以得到中文语言支持。

使用 VSCode 在 Mac 上配置 C/C++ 调试环境第2张

此时你已经可以新建代码文件并编辑。但为了能在终端中直接调试代码,我们还需要配置Launch.json和task.json。

配置 launch.json

进入左侧的调试页面,选择[添加配置...],就会自动在你的工作目录下新建一个.vscode文件来存放你的调试配置。这里我们选择C/C++: (lldb) Launch。

使用 VSCode 在 Mac 上配置 C/C++ 调试环境第3张

对于这里的配置,官方的文档里( 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插件?实用性需考证,更像一个玩具。不过很好玩。

使用 VSCode 在 Mac 上配置 C/C++ 调试环境第4张

  • 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+`打开终端,配置一下默认用户名和邮箱:

使用 VSCode 在 Mac 上配置 C/C++ 调试环境第5张

使用GitHub Desktop可以可视化地将代码托管到GitHub。但VSCode也内置了源代码管理。大多数基本操作都可以在这里完成。你还可以下载Git History插件来查看提交情况。如果该文件夹还没有一个Git仓库,只需要点击初始化就可以了。

将你的文件夹托管到 GitHub

(摔

后来其实解决方案很简单。文件目录里不要有空格就好了。

前阵子会很莫名其妙地遇到部分c语言文件中的断点无法正常停止的问题。所有断点打开后都会提示Unverified Breakpoint,但有些文件却可以正常打断点。搜索许久未果,为此还特地开了一个GitHub的的issue(https://github.com/Microsoft/vscode-cpptools/issues/3246)。

无法设置断点的解决方案

一些 Tips

此外,在商店市场里还有许多配色主题和图标主题可以选择。

使用 VSCode 在 Mac 上配置 C/C++ 调试环境第6张

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

个性化

使用 VSCode 在 Mac 上配置 C/C++ 调试环境第7张

配置好以上两个文件后,你应该就可以在调试界面运行程序并设置断点、监视变量了。如果出现变量未验证(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++配置如下:

使用 VSCode 在 Mac 上配置 C/C++ 调试环境第8张

对于默认快捷键,点击command+P并输入>task来新建一个生成任务。

配置 task.json

这个运行任务的意思就是首先运行一个build c++的task来,得到可执行文件,接着再运行并调试这个文件。

来源:https://billc.io/2019/03/mac-vscode-guide

免责声明:文章转载自《使用 VSCode 在 Mac 上配置 C/C++ 调试环境》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据结构与算法80道php控制器四下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

从 C++ 到 Qt(命令行编译)good

从 C++ 到 Qt 转载自:http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html Qt 是 C++ 的库,Qt在ansi C++ 的基础上进行了一点扩展。 但国内似乎比较浮躁,学Qt的很多连基本的C++如何编译似乎都不太清楚。本文舍弃IDE或qmake、cmake等工具的...

搭建自己的React+Typescript环境(二)

前言 搭建自己的React+Typescript环境(一) 上一篇文章介绍了React+Typescript的基础环境搭建,并没有做任何优化配置,以及根据不同的开发环境拆分配置,这篇文章主要就是介绍这些,并且所有配置都是在上篇文章的基础上,如果有什么问题或者不对的地方,希望大佬们能及时指出,最后有项目地址~ 要用到的几个依赖 webpack-merg...

IDEA 快捷键(MAC 版)说明

转载自:http://blog.csdn.net/sky19891212/article/details/42842871 希望这个版本的介绍更加清楚,减少你一些困惑。 KeyMap文件位置: 在OS X系统中,快捷键配置文件存在于: ~/Library/Preferences/.IntelliJ IDEA <xx>/keymaps/ 你可以在...

VC++的DLL应用(含Demo演示)

在大学大一的时候学的是C,然后后来大二的时候专业又开了C++这个课程,然后再后来自己又自学了一点VC++,大三的时候也试着编写过一个MFC的最简单的窗口程序。到大四的时候,自己又做了一个GIS的项目,是用C#.NET来编写的,然后发现C#上手好容易,而且还大部分语法规则都沿用了C,C++的习惯,于是觉得C++实在是没有一点优势可言啊。但这个暑假的实习经历又...

解决 vscode 卡顿,卡死,占用内存大的方案

解决 vscode 卡顿,卡死,占用内存大的方案 使用管理员身份打开vdcode vscode-文件-首选项-设置 -搜索 1.修复vs code 造成 rg.exe内存占用过大的问题 search.followSymlinks: false 2.修复vs code 造成 git.exe内存占用过大的问题 git.enabled: falsegit.aut...

Andrioid Studio生成jar, aar包

在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件。分别存储位置:*.jar:库/build/intermediates/bundles/debug(release)/classes.jar *.aar:库/build/outputs/aar/libraryname.aar 两者区别:*.jar:只包含了cla...