用于 C++ 结构内存布局可视化的 Visual Studio 扩展
从 Visual Studio Marketplace 2022 下载最新版本
从 Visual Studio Marketplace 2019 下载最新版本
在 C++ 中,结构布局可能会受到不同因素的影响。为了生成面向数据缓存的高性能代码或减少结构内存占用,了解创建、更新、删除或调试代码的同一位置的类布局非常重要。此扩展允许程序员只需单击 1 次即可在 Visual Studio 中可视化其结构。
右键单击任何 C++ 结构定义顶部并选择“显示结构布局” (或按Alt+L )以可视化内存布局。
在这种可视化模式中,带有子项的类型被堆叠起来,以便允许导航进出并更好地了解整体结构。
平面模式会跳过所有组并仅显示一层,从而产生更紧凑的视图。
Struct Layout可以使用不同的系统来解析C++文件并提取内存布局信息。根据构建系统和 Visual Studio 设置的复杂性和怪癖,其中一个选项将比其他选项更方便。可以在扩展选项窗口中更改所使用的方法
当发出布局请求时,扩展程序将执行以下操作:
此方法将通过 Clang LibTooling 可执行文件处理文件位置,该可执行文件将解析当前文件和标头。此方法可以提供非常准确的结果,因为它直接从 Clang AST 检索数据,但它需要精确的构建上下文才能正确理解所有代码。
当触发对 clang libtooling 的查询时,扩展将尝试从活动项目和配置中收集以下数据:
此方法利用了以下事实:pdb(程序数据库)很可能包含所有用户定义类型的所有布局信息。该应用程序使用DIA SDK(调试接口访问)来打开和查询pdb。如果我们的设置尚未准备好使用 Clang 编译器进行编译,构建系统非常复杂,会遇到一些极端情况,或者我们有一些 MSVC 特定代码,则该系统可能会很有用。需要注意的是,我们需要在执行任何查询之前编译项目,以保持 pdb 最新。
该项目对代码贡献开放。
如果您发现此扩展有用,您可以随时给我买一杯咖啡。