我最喜欢的文本编辑器是 Visual Studio Code。我估计它可能是目前最流行的软件开发环境。许多大型软件公司都采用了 Visual Studio Code。
这个命名有点奇怪,因为 Visual Studio Code 除了来自微软之外,几乎和 Visual Studio 没有任何关系。我们通常简称它为“VS Code”,但我更喜欢拼写全名。
Visual Studio Code 的架构很有意思。Visual Studio Code 主要用 TypeScript(本质上就是 JavaScript)在 Electron 之上编写。Electron 本身由 Node.js 运行时环境和 Web 引擎 Chromium 组成。Electron 提供了一种使用 JavaScript 或 TypeScript 构建桌面应用程序的通用方法。
在 Electron 中,Node.js 本身基于 Google v8 引擎执行 JavaScript。因此,微软既在社区支持的引擎(Node.js)上构建,也在 Google 软件栈上构建。
值得注意的是,尽管 Visual Studio Code 运行在 JavaScript 引擎上,但它通常速度非常快。在我的主笔记本电脑上,它启动速度大约为 0.1 秒。我很少感觉到任何延迟。无论在 macOS 还是 Windows 上使用它,它几乎总是很流畅。在 Windows 下,Visual Studio Code 感觉比 Visual Studio 更快。然而,Visual Studio 是用 C# 和 C++ 编写的,原则上,这些语言可以实现更好的优化。它之所以能够运行,是因为 v8、Chromium 和 Node.js 中投入的所有优化工作。
Visual Studio Code 似乎也具备几乎无限的可扩展性。它高度可移植,并且对终端的支持非常出色。结合 Microsoft Copilot,当你需要进行一些 Vibe 编程时,可以获得不错的 AI 体验。我还很喜欢“远程 SSH”扩展,它允许你通过 SSH 连接到远程服务器,并像在本地机器上一样工作。
当我进行系统编程时,我通常使用 C 或 C++ 编写代码,并使用 CMake 作为构建系统。在我看来,CMake 是一个非常棒的构建系统。我将它与CPM结合使用来处理依赖项。
微软为 CMake 用户提供了一个实用的扩展,名为CMake Tools 。我平时用得不多,但偶尔需要启动调试器做一些比较重要的工作时,它还是挺方便的。
在大多数情况下,我在Linux下的调试用法很简单:
- 打开 CMake 项目所在的仓库。它可能会要求我输入编译器,但我没有指定。看起来运行正常。
- 我通过输入 F1 并选择CMake: Set Builder Target来选择要运行/调试的目标。如果我只输入目标的名称(例如,可执行文件),它似乎可以工作。
- 在文本编辑器中,我点击希望调试器停止的行左侧。您还可以添加条件停止。
- 我点击了 Visual Studio Code 窗口底部栏中的小“错误”图标。
它往往能够发挥作用。
对于某些项目,您需要向 CMake 传递一些配置标志。您只需在子目录.vscode中创建一个 JSON 文件settings.json即可。该 JSON 文件包含一个 JSON 对象,您只需添加一个cmake.configureArgs并设置一些特殊设置,例如……
{ “ cmake.configureArgs ” : [ “ -DSIMDJSON_DEVELOPER_MODE = ON ” ] }
settings.json还有许多其他用途。您可以设置用户界面的首选项,从搜索工具中排除文件,配置 linting 等等。您还可以将settings.json文件签入到受版本控制的项目中,以便每个人都获得相同的首选项。
遗憾的是,在 macOS 下,我的调试体验不太流畅。这个问题很可能是因为 macOS 默认使用 LLVM 而不是 GCC 作为 C 和 C++ 编译器。
因此,在 macOS 下,我添加了两个不太明显的步骤。
- 我安装了由 Vadim Chugunov 编写的名为
CodeLLDB
的 ab 扩展。 - 我在子目录.vscode中创建了一个名为launch.json的文件:
{ “配置” : [ { "名称" : "启动 (lldb) " , “类型” : “ lldb ” , “请求” : “启动” , “程序” : “ ${command:cmake.launchTargetPath} ” , “ stopAtEntry ” : false , " cwd " : " ${workspaceFolder} " , “ externalConsole ” : false , } ] }
其余一切都和我在 Linux 下一样。一切正常。
Visual Studio Code 是一个典型的工具,它做任何事都不可能完美无缺。它要求你手动编辑 JSON 文件,要求你自行找到合适的扩展名。它的调试器环境虽然不错,但你不会对它赞不绝口。不过,Visual Studio Code 的整体表现非常出色。一切都恰到好处,让你能够以最少的麻烦完成工作。
Web 本身依赖于通用技术(HTML、CSS、JavaScript),这些技术虽然各自不完美,但却构成了一个连贯且适应性强的整体。Visual Studio Code 体现了这一理念:它并不试图做到面面俱到,但它提供了一个平台,让每个开发者都能构建自己的工作流程。这种模块化设计,加上简洁的界面和活跃的社区,解释了为什么它成为我最喜爱的工具之一。
原文: https://lemire.me/blog/2025/08/24/debugging-c-with-visual-studio-code-under-macos/