首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

持续集成利器:C+Build Insight SDK发布

官宣C++ Build Insights SDK

今天,我们很高兴的宣布C++ Build Insights SDK正式发布。它是一个编程框架,通过编写C或者C++代码,我们可以调用这个框架来获取MSVC编译过程中产生各种信息。同时为了配合这次发布,我们还在GitHub上开源了vcperf,因为vcperf这个工具本身也使用到了这个SDK,在开发你自己的工具时,你可以将vcperf作为一个参考。我们期待着你通过这套编程框架开发出来的各种应用和你的使用反馈。

背景知识

去年11月的时候,我们宣布了[vcperf and its Windows Performance Analyzer (WPA) plugin]里帮助开发者获取MSVC的编译信息。实际上,这两个组件的底层也使用到了C++ Build Insights。那么,C++ Build Insights到底是什么呢?

我们之前已经提起过,C++ Build Insights是基于Event Tracing for Windows (ETW)组件的,ETW是Windows操作系统平台上的一个十分方便好用的追踪机制。但是ETW对于我们的客户所开发的大型C++工程来说还是不够的。我们对事件模型和分析算法进行了优化,这一工作的结果产生了一种针对MSVC的新的分析平台,现在我们管它叫”C++ Build Insights”。

我们开发的vcperf和一些其他的内部工具都是基于C++ Build Insights的。但是,我们希望开发者也可以能用到这套编程框架来开发他们自己的应用。因此,我们将这套分析平台进行了打包并通过CC或者C++来暴露出使用接口,也即,我们为开发者提供了一套成熟可用的SDK。

让我们开始吧!

如果你有如下的使用场景,你就可以使用C++ Build Insights SDK来开发自己的工具:

1. 以程序化的方式分析输出,而不是借助于WPA。

2. 经工程编译信息分析整合到你的持续集成(CI)中。

3. 当成一个小玩具,玩一玩。

下面的例子展示了如何使用这套SDK。在这个例子中,它显示了如何编写一个显示出所有生成时间大于500毫秒的函数的应用程序。

使用步骤如下

1. 下载并安装Visual Studio 2019。

2. 获取你的工程编译分析报告

2.1 启动[VS2019 x64 Native Tools]命令行提示

2.2 执行指令:[vcperf /start MySessionName]

2.3 从任何地方编译你的工程,即使是在Visual Studio里编译也可以,因为vcperf经收集整个系统里的编译信息。

2.4 执行指令:[vcperf /stopnoanalyze MySessionName outputFile.etl]。这条指令将获取到的编译分析结果保存到文件[outputFile.etl]中。

3. 启动Visual Studio并创建一个新的C++工程

4. 在你的工程上右键,选择[Manage NuGet packages…]并从官方nuget.org上安装最新的Microsoft.Cpp.BuildInsights NuGet。安装前,你需要点击接受许可协议。

5. 输入如下的代码。

6. 传入[outputFile.etl]的路径作为第一个参数进行编译并运行。

大家可以在我们的[C++ Build Insights samples GitHub repository]上找到一份可以克隆并编译的工程例子。除了可以通过执行vcperf工具来获取编译信息,开发者还可以通过调用我们的SDK来获取信息,具体请参考C++ Build Insights SDK的文档。

vcperf现已开源vcperf

这个工具本身就是基于C++ Build Insights SDK的,今天我们将vcperf在GitHub上开源了。我们希望这次开源,可以让我们的开发者可以学到关于SDK的更多知识,并可以对vcperf进行定制开发来满足各自的需求。在仓库中包含了一个例子,它扩展了vcperf工具来侦测链接器因为错误条件而导致的重启。例子中凸显了在C++ Build Insights的[Build Explorer]视图中的一些特性,我们建议大家使用如下的顺序来阅读这个例子代码:

1. RestartedLinkerDetector.h

2. BuildExplorerView.cpp

3. Commands.cpp

为什么你需要从GitHub上编译并运行vcperf呢?因为在当前发布的vcperf中还有一些不被支持的事件类型,包括新的模板实例化事件。通过这种方法,你可以自行开发支持这类新事件。另外,vcperf并没有绑定在任何特定的Visual Studio版本,以上说的新的shiji只在Visual Studio 2019 v16.4及以上版本才被支持。

下面是更新后的事件表格:

总结

对于大型C++工程,获取编译过程中产生的各类信息对于持续集成,自动化构建都有十分重要的作用。但是,目前我的工程还不是很大,好像还用不上,等个几年后再说吧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200307A09MI500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券