首页

VS2022 经过优化之后的空指针检测  

C++静态分析团队一直致力于提供各种工具来使开发者尽可能地编写安全的代码。感谢开发者的反馈和建议,我们添加了越来越多的代码安全检查规则并修复了一些对开发者影响比较大的Bug。 在本文中,我将简要介绍最新的一项实验性功能:空指针引用错误。我还会将这项新功能和现有的类似检查做一个对比,看看新功能到底”新”在哪里。 概述 从底层角度来看,我们实现了多个代码分析引擎。当然,这些底层...

Visual Studio静态分析组件更新一览  

咱们C++静态分析团队的一个主要目标就是:让广大的C++开发者编写尽可能安全的代码。 一直以来,我们一直在持续地向静态分析组件中添加新的安全代码检查并处理开发者报告的各种Bug。感谢你们。 下面我汇总了所有从Visual Studio 2019 v16.10 到 v16.11之间所有的Bug修复。请注意,16.11版本Visual Studio最后的non-servicing发布版本,也就是说,我...

VS2019中C++20的协程实现  

以下内容来自Terry Mahaffey和Ramkumar Ramesh。 在Visual Studio 2019 v16.8中,我们在一篇文章中宣布了对协程的支持。从那个时候开始,我们引入了一些列和协程相关的新特性和改进。今天的这篇文章,我们将这些新东西来一个汇总给大家看看,所有这些新东西都已经在Visual Studio 2019 v16.11版本中可用。 调试改进 从VS2019 v16.9...

动态初始化和用户定义分区的新编译器警告  

最近我们添加了2项新的警告到MSVC编译器中,用来提醒开发者错误地使用为编译器保留的二进制分区。在今天的这篇短文中,我们将会解释这两项警告的具体内容和它们会带来什么潜在的益处。 听起来还不错,请继续阅读。 MSVC C++编译器提供了一些方法来创建不同的分区并将数据存放到这些分区中。链接器将会将它们转换为PE格式中的分区中。 此外,编译器还会为它自己创建一些分区。举个例子,[.CRT$XCU]这个...

Windows用户界面中的”睫毛膏”

Windows操作系统的用户界面的”外观”,实际上,也经历过一段时尚周期。 起初,还是在Windows 1.0的时代,用户界面是非常扁平的,因为那个时候屏幕分辨率十分低,而色彩深度几乎还不存在。如果你的系统是16色的,就已经十分了不得了。因为硬件的限制,操作系统不能使用太多像素来绘制类似于边框,阴影之类的东西。这种扁平化的界面一直延续到Windows 2.0。 到了Wind...

VS2022调试新功能: 使用LLDB附加到远程进程  

现在,你可以在Visual Studio中使用[Attach to Process]功能来使用GDB或者LLDB附加一个远程进程。在Visual Studio 2019的时候,我们就已经添加了一项对附加到远程GDB调试系统上的进程的支持。在最新版本的Visual Studio 2022 预览版3中,我们继续添加了对附加LLDB调试进程的支持,下面我们来具体看看。 Visual Studio中的远程...

Visual Studio新增对ARM64EC的支持  

ARM64EC(“Emulation Compatible”)是一种新的应用程序二进制接口(ABI),旨在用来在ARM平台为Windows 11编写应用程序。有了ARM64EC,你可以构建能够在ARM平台上运行的Native应用,也可以将现有的x64应用程序以增量化的方式迁移到ARM平台。 为什么开发者需要面向ARM64EC? 基于ARM平台所构建的应用程序,可以在对应的A...

VS2022新功能:Hot Reload  

硬菜来了 在Visual Studio 2022 预览版2中,我们很高兴地官宣这个新功能(Hot Reload)正式对C++开发者可用。 C++版本的Hot Reload,位于Edit and Continue功能之上,它是一种调试时代码编辑功能。Hot Reload可以在不需要停止在代码断点或者重启应用程序的情况下,就可以对代码进行修改,并可以立即看到代码修改的效果。 请注意,Hot Reloa...

Visual Studio Code C++扩展7月更新汇总  

Visual Studio Code C++扩展2021年7月更新来了,这次的更新版本,带来了一系列全新的功能,例如:调试过程中的反汇编视图,内联宏展开以及对Windows ARM64架构的调试支持,另外包括了一些功能改进及Bug修复。下面我们具体来看看这些新功能点。 反汇编视图 我们很高兴的引入这项全新功能,这个功能也是及吉特哈布上被要求最多的一项功能,目前这项功能还没有正式推出,而仅在VS C...

C++模块介绍第一部分:主模块接口  

在这个系列文章中,我们将会探索如何从命令行中构建C++模块和头文件单元,以及如何使用/引用C++模块。 今天的这篇文章的主要目的是介绍如何构建一个C++模块,并从命令行中使用主模块接口,我们还会介绍需要使用到的一些编译开关。 请注意:这个系列教程会主要关注在如何处理IFC和对象文件输出,我们不会讨论其他类型的编译器输出例如PDB文件。 和C++模块相关的编译器开关 构建一个C++模块接口 从这...