aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Turner2013-12-07 13:07:02 -0800
committerDavid Turner2013-12-07 13:07:02 -0800
commite7054aa5a7a1b1b5345eea1705fd07ab565eead5 (patch)
tree83396ef7ae9049f0f33e29ed8cfa741e1732deb9
parentcd4e1d901deb3bdd9778791cca10c6aad6ee4447 (diff)
parentaff3412479aaf081cc4cdd99f0bcca3a894b663f (diff)
downloadscummvm-rg350-e7054aa5a7a1b1b5345eea1705fd07ab565eead5.tar.gz
scummvm-rg350-e7054aa5a7a1b1b5345eea1705fd07ab565eead5.tar.bz2
scummvm-rg350-e7054aa5a7a1b1b5345eea1705fd07ab565eead5.zip
Merge pull request #416 from SpecLad/natvis
DEVTOOLS: Add debug visualization files for Visual Studio 2012+
-rw-r--r--devtools/create_project/scripts/scummvm.natvis68
-rw-r--r--dists/msvc11/readme.txt5
-rw-r--r--dists/msvc12/readme.txt5
3 files changed, 76 insertions, 2 deletions
diff --git a/devtools/create_project/scripts/scummvm.natvis b/devtools/create_project/scripts/scummvm.natvis
new file mode 100644
index 0000000000..ffeced7cff
--- /dev/null
+++ b/devtools/create_project/scripts/scummvm.natvis
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Debug visualizers for a few common ScummVM types for Visual Studio 2012 and up.
+
+ To use, copy this file into Documents\Visual Studio 20xx\Visualizers.
+
+ Known issues:
+
+ * Lists appear to be infinite (the same elements repeat over and over again).
+ Unfortunately, Lists don't store length information, and it's not possible to
+ detect whether a Node is the last one by the Node itself.
+
+ * In HashMaps, missing and dummy nodes are shown along with the useful ones.
+-->
+
+<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+ <Type Name="Common::Array&lt;*&gt;">
+ <DisplayString>{{size = {_size}}}</DisplayString>
+ <Expand>
+ <Item Name="[size]">_size</Item>
+ <Item Name="[capacity]">_capacity</Item>
+ <ArrayItems>
+ <Size>_size</Size>
+ <ValuePointer>_storage</ValuePointer>
+ </ArrayItems>
+ </Expand>
+ </Type>
+
+ <Type Name="Common::HashMap&lt;*,*,*,*&gt;">
+ <DisplayString>{{ size = {_size} }}</DisplayString>
+ <Expand>
+ <Item Name="[size]">_size</Item>
+ <Item Name="[capacity]">_mask + 1</Item>
+ <Item Name="[deleted]">_deleted</Item>
+ <IndexListItems>
+ <Size>_mask + 1</Size>
+ <ValueNode Condition="_storage[$i] &amp;&amp; _storage[$i] != (Common::HashMap&lt;$T1,$T2,$T3,$T4&gt;::Node *)1">*_storage[$i]</ValueNode>
+ </IndexListItems>
+ </Expand>
+ </Type>
+
+ <Type Name="Common::List&lt;*&gt;">
+ <DisplayString Condition="&amp;_anchor == _anchor._next">{{ empty }}</DisplayString>
+ <DisplayString Condition="&amp;_anchor != _anchor._next">{{ non-empty }}</DisplayString>
+ <Expand>
+ <LinkedListItems Condition="&amp;_anchor != _anchor._next">
+ <HeadPointer>_anchor._next</HeadPointer>
+ <NextPointer>_next</NextPointer>
+ <ValueNode>((Common::ListInternal::Node&lt;$T1&gt;*)this)->_data</ValueNode>
+ </LinkedListItems>
+ </Expand>
+ </Type>
+
+ <Type Name="Common::String">
+ <DisplayString>{_str,[_size]}</DisplayString>
+ <StringView>_str,[_size]</StringView>
+ <Expand>
+ <Item Name="[size]">_size</Item>
+ <Item Condition="_str != _storage" Name="[capacity]">_extern._capacity</Item>
+ <Item Condition="_str != _storage" Name="[refCount]">*_extern._refCount</Item>
+ <ArrayItems>
+ <Size>_size</Size>
+ <ValuePointer>_str</ValuePointer>
+ </ArrayItems>
+ </Expand>
+ </Type>
+</AutoVisualizer>
diff --git a/dists/msvc11/readme.txt b/dists/msvc11/readme.txt
index fa91a8cc12..45faac0663 100644
--- a/dists/msvc11/readme.txt
+++ b/dists/msvc11/readme.txt
@@ -3,4 +3,7 @@ files using the create_project tool inside the /devtools/create_project folder.
To create the default project files, build create_project.exe, copy it inside
this folder and run the create_msvc11.bat file for a default build. You can run
-create_project.exe with no parameters to check the possible command-line options
+create_project.exe with no parameters to check the possible command-line options.
+
+To enable debug visualization for common types, see the comment in
+/devtools/create_project/scripts/scummvm.natvis.
diff --git a/dists/msvc12/readme.txt b/dists/msvc12/readme.txt
index 760f9ff601..2d91c72140 100644
--- a/dists/msvc12/readme.txt
+++ b/dists/msvc12/readme.txt
@@ -3,4 +3,7 @@ files using the create_project tool inside the /devtools/create_project folder.
To create the default project files, build create_project.exe, copy it inside
this folder and run the create_msvc12.bat file for a default build. You can run
-create_project.exe with no parameters to check the possible command-line options
+create_project.exe with no parameters to check the possible command-line options.
+
+To enable debug visualization for common types, see the comment in
+/devtools/create_project/scripts/scummvm.natvis.