一键导入
natvis
Use ONLY when the user explicitly requests a Natvis visualizer for a specific type - never generate unprompted
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use ONLY when the user explicitly requests a Natvis visualizer for a specific type - never generate unprompted
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Use when asked to run the Google Benchmark suite, measure performance, or compare two benchmark runs (before/after an optimization) on this Windows/MSVC project
Use when editing C/C++ files, before claiming edits are complete, or when tempted to manually adjust indentation, spacing, brace placement, or include ordering
Use when asked to measure, report, or investigate test code coverage on Windows/MSVC builds - requires OpenCppCoverage and an already-built test binary
Use when about to claim a fix compiles, a bug is resolved, or a change is complete - requires actually building before asserting success
基于 SOC 职业分类
| name | natvis |
| description | Use ONLY when the user explicitly requests a Natvis visualizer for a specific type - never generate unprompted |
Add Visual Studio debugger visualizers for C++ types to the project's existing .natvis files. Only generate when explicitly requested.
Official documentation: https://learn.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects
Each module has one .natvis at its root. Find the right file by the type's namespace:
| Namespace | File |
|---|---|
GLEngine::Physics::* | Physics/Physics.natvis |
Utils::* | Utils/utils.natvis |
GLEngine::Renderer::* | Renderer/renderer.natvis |
GLEngine::Core::* | Core/Core.natvis |
GLEngine::Entity::* | Entity/Entity.natvis |
GLEngine::GUI::* | GUI/GUI.natvis |
Add the new <Type> entry inside the existing <AutoVisualizer> block.
<Type Name="GLEngine::MyNS::MyType">
<DisplayString>{m_field1} {m_field2}</DisplayString>
<Expand>
<Item Name="[Field1]">m_field1</Item>
<Item Name="[Field2]">m_field2</Item>
</Expand>
</Type>
<DisplayString Condition="m_valid">{m_value}</DisplayString>
<DisplayString Condition="!m_valid">invalid</DisplayString>
<Intrinsic Name="IsValid" Expression="!isinf(m_Min.x)"/>
<DisplayString Condition="IsValid()">{m_Min}-{m_Max}</DisplayString>
<DisplayString Condition="!IsValid()">uninitialized</DisplayString>
__m128 field access<DisplayString>{data.m128_f32[0]},{data.m128_f32[1]},{data.m128_f32[2]}</DisplayString>
</> and * wildcards, $T1/$T2 for params)<Type Name="MyNS::MyTemplate<*, *>">
<DisplayString>size={$T2} ptr={($T1*)m_ptr}</DisplayString>
<Expand>
<ArrayItems>
<Size>$T2</Size>
<ValuePointer>($T1*)m_ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Synthetic Name="sides">
<DisplayString Condition="twoSided">two-sided</DisplayString>
<DisplayString Condition="!twoSided">one-sided</DisplayString>
</Synthetic>
{{ and }}<DisplayString>{{x={m_x}, y={m_y}}}</DisplayString>
<!-- renders as: {x=1.0, y=2.0} -->
.natvis file from the table above..natvis to check formatting and avoid duplicates.<Type> block inside <AutoVisualizer>, before </AutoVisualizer>.__m128 members, use .m128_f32[i] to access components.