C++|新功能速递:Visual Studio Code中的C++调试

C++|新功能速递:Visual Studio Code中的C++调试

文章图片

C++|新功能速递:Visual Studio Code中的C++调试

文章图片

C++|新功能速递:Visual Studio Code中的C++调试

文章图片

C++|新功能速递:Visual Studio Code中的C++调试

文章图片

C++|新功能速递:Visual Studio Code中的C++调试

距离我们上一篇关于VS Code中C++开发的博客文章已经过去了一阵子了 , 我们一直在努力开发新功能和对现有Bug进行修复 , 今天我很高兴地向大家介绍VS Code中最新的C++调试器改进 , 包括 , 对Apple M1芯片的支持 , 数据断点和新的运行/调试按钮 。
对Apple M1的支持去年 , 我们为Apple Silicon ARM64架构启用了语言服务器支持 , 这意味着你现在可以在 Apple M1 芯片上本地运行 C++ 扩展的语言服务器(负责 IntelliSense、代码导航和自动完成等功能) 。当时 , C++扩展的调试器二进制文件并没有在M1芯片上本地运行 。现在 , 终于可以了!
使用最新版本的C++扩展 , 你可以在 M1 芯片上运行 VS Code 时无缝调试C++程序 。大家试试看 , 有什么想法请直说 。
数据断点C++扩展的 1.8.4 版本带来了对数据断点的支持 , 同时在 VS Code 中使用GDB调试 C++程序 。 当存储在指定内存地址的值发生变化时 , 数据断点会中断执行 。
要在VS Code中调试时设置数据断点 , 请右键单击调试窗格中的变量并选择[Break on Value Change
, 如下图所示:

马上你就会看到调试窗格的断点部分中列出的数据断点 。

在这个例子中 , 如果我们继续运行程序 , 下一次中断将是局部变量 i 改变值的时候 。使用调试控制面板继续运行程序 。

果然 , 当 i 将值从 1 更改为 2 时 , 执行中断 。

数据断点故障排除在同一个示例程序中 , 如果在字符串类型的 msg 上设置数据断点 , 你可能会在调试控制台中看到一条错误消息:无法设置数据断点:值不在预期范围内 。(参数“大小”) 。

这是因为字符串类型是 32 字节 , 并且我们可以设置数据断点的大小有限制 。这种限制来自这样一个事实 , 即你的程序运行的体系结构具有它可以使用的有限数量的硬件数据断点 。下表显示了每个架构可以使用多少个寄存器 。

新的启动调试按钮我们知道设置 tasks.json 和 launch.json 来运行和调试 C++ 文件并不是很方便 。在这次的新版本中 , 我们在VS Code 中添加了一个新的调试按钮 。
在 1.9.7 更新中 , 只要 C 或 C++ 文件处于活动状态 , 你就会在编辑器的右上角看到一个播放按钮 。它与 Python 扩展、Java 扩展和 Code Runner 扩展使用的播放按钮相同 。

按钮有两种模式:“运行 C/C++ 文件”和“调试 C/C++ 文件” 。默认模式是“运行 C/C++ 文件” , 你可以使用下拉菜单切换模式 。

如果你的工作区中已经有一个 launch.json 文件 , 那么在确定如何运行和调试 C++ 文件时 , 播放按钮将从该文件中读取 。如果你没有launch.json , 播放按钮将即时创建一个临时的“快速调试”配置 , 完全不需要launch.json!
当你的项目没有 launch.json 时 , 我们还简化了 F5(运行 > 开始调试)以使用与播放按钮相同的临时“快速调试”配置 。如果你需要创建 launch.json 来自定义调试 , 请从主菜单中选择 Run > Add Configuration… 。