summaryrefslogtreecommitdiff
path: root/buildscripts/win
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2019-01-02 15:39:47 -0500
committerMark Benvenuto <mark.benvenuto@mongodb.com>2019-01-11 13:56:53 -0500
commitc338365277ede83996783e6b61dda0caa8914469 (patch)
tree3a44c1815bb3066e391393c9c75ef54d9a3c75e5 /buildscripts/win
parent2f67f3c66271e724b48afa2db88e8b6c3317f6ab (diff)
downloadmongo-c338365277ede83996783e6b61dda0caa8914469.tar.gz
SERVER-38951 Visual Studio Debugger Visualizers
Diffstat (limited to 'buildscripts/win')
-rw-r--r--buildscripts/win/mongodb.natvis73
1 files changed, 73 insertions, 0 deletions
diff --git a/buildscripts/win/mongodb.natvis b/buildscripts/win/mongodb.natvis
new file mode 100644
index 00000000000..7e6a6bfb854
--- /dev/null
+++ b/buildscripts/win/mongodb.natvis
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+ <!--
+ NatVis Documentation:
+ https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2017
+
+ Boost Visualizers:
+ https://marketplace.visualstudio.com/items?itemName=ArkadyShapkin.CDebuggerVisualizersforVS2017
+ https://github.com/KindDragon/CPPDebuggerVisualizers
+
+ To load in Visual Studio, the natvis file must be in the Visual Studio project.
+ To load in WinDBG, run ".nvload mongdb.natvis"
+ -->
+ <Type Name="mongo::Status">
+ <DisplayString Condition="_error == 0x0">OK</DisplayString>
+ <DisplayString>{{Error={_error,d}}}</DisplayString>
+ </Type>
+
+ <Type Name="mongo::StatusWith&lt;*&gt;">
+ <DisplayString Condition="_status._error == 0x0">{{Value={_t}}}</DisplayString>
+ <DisplayString Condition="_status._error != 0x0">{{Error={_status._error,d}}}</DisplayString>
+ <DisplayString >{_status}</DisplayString>
+ <Expand>
+ <Item Name="Status">_status</Item>
+ <ExpandedItem>_t</ExpandedItem>
+ </Expand>
+ </Type>
+
+ <Type Name="mongo::StringData">
+ <DisplayString Condition="_size == 0">empty</DisplayString>
+ <DisplayString>{_data,[_size]s8}</DisplayString>
+ <StringView>_data,[_size]s8</StringView>
+ </Type>
+
+ <Type Name="absl::container_internal::raw_hash_set&lt;*&gt;">
+ <DisplayString>{{ size={size_} }}</DisplayString>
+ <Expand>
+ <Item Name="[capacity]">capacity_</Item>
+ <CustomListItems>
+ <Variable Name="NumBuckets" InitialValue="capacity_" />
+ <Variable Name="BucketIndex" InitialValue="0" />
+ <Size>size_</Size>
+ <Loop>
+ <Break Condition="BucketIndex == NumBuckets"/>
+ <If Condition="ctrl_[BucketIndex] >= 0">
+ <Item>slots_[BucketIndex],na</Item>
+ </If>
+ <Exec>++BucketIndex</Exec>
+ </Loop>
+ </CustomListItems>
+ </Expand>
+ </Type>
+
+ <Type Name="absl::node_hash_map&lt;*&gt;">
+ <DisplayString>{{ size={size_} }}</DisplayString>
+ <Expand>
+ <Item Name="[capacity]">capacity_</Item>
+ <CustomListItems>
+ <Variable Name="NumBuckets" InitialValue="capacity_" />
+ <Variable Name="BucketIndex" InitialValue="0" />
+ <Size>size_</Size>
+ <Loop>
+ <Break Condition="BucketIndex == NumBuckets"/>
+ <If Condition="ctrl_[BucketIndex] >= 0">
+ <Item Name="[{slots_[BucketIndex]->first,na}]">slots_[BucketIndex]->second,na</Item>
+ </If>
+ <Exec>++BucketIndex</Exec>
+ </Loop>
+ </CustomListItems>
+ </Expand>
+ </Type>
+
+</AutoVisualizer>