ワンクリックで
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 ページを確認してインストールできます。
SOC 職業分類に基づく
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
| 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.