بنقرة واحدة
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.