summaryrefslogtreecommitdiffstats
path: root/tools/win
diff options
context:
space:
mode:
authorzturner@chromium.org <zturner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-28 00:03:18 +0000
committerzturner@chromium.org <zturner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-28 00:03:18 +0000
commit8431e4e25b839614fe888637145bdb94eeda6796 (patch)
tree2ff0ff03775d560232b40e2fea58fa02c7d16a79 /tools/win
parente0391410239e63401da633aba7eddb2e53fe729f (diff)
downloadchromium_src-8431e4e25b839614fe888637145bdb94eeda6796.zip
chromium_src-8431e4e25b839614fe888637145bdb94eeda6796.tar.gz
chromium_src-8431e4e25b839614fe888637145bdb94eeda6796.tar.bz2
Add DebugVisualizers
BUG=293764 R=rpaquay@chromium.org Review URL: https://codereview.chromium.org/176893005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253981 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/win')
-rw-r--r--tools/win/DebugVisualizers/chrome.natvis266
-rw-r--r--tools/win/DebugVisualizers/skia.natvis35
-rw-r--r--tools/win/DebugVisualizers/webkit.natvis106
3 files changed, 407 insertions, 0 deletions
diff --git a/tools/win/DebugVisualizers/chrome.natvis b/tools/win/DebugVisualizers/chrome.natvis
new file mode 100644
index 0000000..7a7c45e
--- /dev/null
+++ b/tools/win/DebugVisualizers/chrome.natvis
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<AutoVisualizer
+ xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+ <Type Name="gfx::Point">
+ <AlternativeType Name="gfx::PointF"/>
+ <DisplayString>({x_}, {y_})</DisplayString>
+ <Expand>
+ <Item Name="X">x_</Item>
+ <Item Name="Y">y_</Item>
+ </Expand>
+ </Type>
+ <Type Name="gfx::Size">
+ <AlternativeType Name="gfx::SizeF"/>
+ <DisplayString>({width_}, {height_})</DisplayString>
+ <Expand>
+ <Item Name="Width">width_</Item>
+ <Item Name="Height">height_</Item>
+ </Expand>
+ </Type>
+ <Type Name="gfx::Rect">
+ <AlternativeType Name="gfx::RectF"/>
+ <DisplayString>({origin_.x_}, {origin_.y_}) x ({size_.width_}, {size_.height_})</DisplayString>
+ <Expand>
+ <Item Name="Left">origin_.x_</Item>
+ <Item Name="Top">origin_.y_</Item>
+ <Item Name="Width">size_.width_</Item>
+ <Item Name="Height">size_.height_</Item>
+ </Expand>
+ </Type>
+ <Type Name="aura::Window::Value">
+ <DisplayString>{name,s}: {value}</DisplayString>
+ <Expand/>
+ </Type>
+ <Type Name="aura::Window">
+ <DisplayString>{name_,s}</DisplayString>
+ <Expand>
+ <Item Name="Name">name_</Item>
+ <Item Name="Id">id_</Item>
+ <Item Name="Parent">parent_</Item>
+ <Item Name="Children">children_</Item>
+ <Item Name="Bounds">bounds_</Item>
+ <Item Name="Type">type_</Item>
+ <Item Name="Visible">visible_</Item>
+ <Item Name="Transparent">transparent_</Item>
+ <!--<Synthetic Name="Property Map">
+ <DisplayString>Size = {prop_map_._Mysize}</DisplayString>
+ <Expand>
+ <TreeItems>
+ <Size>prop_map_._Mysize</Size>
+ <HeadPointer>prop_map_._Myhead-&gt;_Parent</HeadPointer>
+ <LeftPointer>_Left</LeftPointer>
+ <RightPointer>_Right</RightPointer>
+ <ValueNode Condition="_Isnil == 0">_Myval.second</ValueNode>
+ </TreeItems>
+ </Expand>
+ </Synthetic>-->
+ <Item Name="Layer">layer_</Item>
+ </Expand>
+ </Type>
+ <Type Name="scoped_ptr&lt;*,*&gt;">
+ <DisplayString Condition="impl_.data_.ptr == 0">null</DisplayString>
+ <DisplayString>{impl_.data_.ptr}</DisplayString>
+ <Expand>
+ <ExpandedItem>impl_.data_.ptr</ExpandedItem>
+ </Expand>
+ </Type>
+ <Type Name="scoped_refptr&lt;*&gt;">
+ <DisplayString Condition="ptr_ == 0">null</DisplayString>
+ <DisplayString>[{((base::subtle::RefCountedBase*)ptr_)-&gt;ref_count_}] {(void*)ptr_} {*ptr_}</DisplayString>
+ <Expand>
+ <Item Name="Ptr">ptr_</Item>
+ <Item Name="RefCount">((base::subtle::RefCountedBase*)ptr_)-&gt;ref_count_</Item>
+ </Expand>
+ </Type>
+ <Type Name="base::RefCounted&lt;*&gt;">
+ <DisplayString>RefCount: {ref_count_}</DisplayString>
+ <Expand>
+ <Item Name="RefCount">ref_count_</Item>
+ </Expand>
+ </Type>
+ <Type Name="IPC::Message::Header">
+ <DisplayString>{{Routing: {routing}, Type: {type}}}</DisplayString>
+ <Expand>
+ <Item Name="RoutingId">routing</Item>
+ <Item Name="Type">type</Item>
+ <Synthetic Name="Priority"
+ Condition="(flags &amp; IPC::Message::PRIORITY_MASK) ==
+ IPC::Message::PRIORITY_LOW">
+ <DisplayString>Low</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Priority"
+ Condition="(flags &amp; IPC::Message::PRIORITY_MASK) ==
+ IPC::Message::PRIORITY_NORMAL">
+ <DisplayString>Normal</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Priority"
+ Condition="(flags &amp; IPC::Message::PRIORITY_MASK) ==
+ IPC::Message::PRIORITY_HIGH">
+ <DisplayString>High</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Sync"
+ Condition="(flags &amp; IPC::Message::SYNC_BIT) != 0">
+ <DisplayString>true</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Sync"
+ Condition="(flags &amp; IPC::Message::SYNC_BIT) == 0">
+ <DisplayString>false</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Reply"
+ Condition="(flags &amp; IPC::Message::REPLY_BIT) != 0">
+ <DisplayString>true</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Reply"
+ Condition="(flags &amp; IPC::Message::REPLY_BIT) == 0">
+ <DisplayString>false</DisplayString>
+ </Synthetic>
+ <Synthetic Name="ReplyError"
+ Condition="(flags &amp; IPC::Message::REPLY_ERROR_BIT) != 0">
+ <DisplayString>true</DisplayString>
+ </Synthetic>
+ <Synthetic Name="ReplyError"
+ Condition="(flags &amp; IPC::Message::REPLY_ERROR_BIT) == 0">
+ <DisplayString>false</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Unblock"
+ Condition="(flags &amp; IPC::Message::UNBLOCK_BIT) != 0">
+ <DisplayString>true</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Unblock"
+ Condition="(flags &amp; IPC::Message::UNBLOCK_BIT) == 0">
+ <DisplayString>false</DisplayString>
+ </Synthetic>
+ <Synthetic Name="PumpingMessages"
+ Condition="(flags &amp; IPC::Message::PUMPING_MSGS_BIT) != 0">
+ <DisplayString>true</DisplayString>
+ </Synthetic>
+ <Synthetic Name="PumpingMessages"
+ Condition="(flags &amp; IPC::Message::PUMPING_MSGS_BIT) == 0">
+ <DisplayString>false</DisplayString>
+ </Synthetic>
+ <Synthetic Name="HasSentTime"
+ Condition="(flags &amp; IPC::Message::HAS_SENT_TIME_BIT) != 0">
+ <DisplayString>true</DisplayString>
+ </Synthetic>
+ <Synthetic Name="HasSentTime"
+ Condition="(flags &amp; IPC::Message::HAS_SENT_TIME_BIT) == 0">
+ <DisplayString>false</DisplayString>
+ </Synthetic>
+ </Expand>
+ </Type>
+ <Type Name="IPC::Message">
+ <DisplayString>{{size = {header_size_+capacity_after_header_}}}</DisplayString>
+ <Expand>
+ <ExpandedItem>*((IPC::Message::Header*)header_),nd</ExpandedItem>
+ <Item Name="Payload">(void*)((char*)header_ + header_size_)</Item>
+ </Expand>
+ </Type>
+ <Type Name="base::TimeDelta">
+ <DisplayString>{delta_}</DisplayString>
+ <Expand>
+ <Synthetic Name="Days">
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerDay)}</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Hours">
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerHour)}</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Minutes">
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerMinute)}</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Seconds">
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerSecond)}</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Milliseconds">
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerMillisecond)}</DisplayString>
+ </Synthetic>
+ <Item Name="Microseconds">delta_</Item>
+ </Expand>
+ </Type>
+ <Type Name="GURL">
+ <DisplayString>{spec_}</DisplayString>
+ <Expand>
+ <Item Name="Spec">spec_</Item>
+ <Item Name="IsValid">is_valid_</Item>
+ <Synthetic Name="Scheme">
+ <DisplayString
+ Condition="parsed_.scheme.len==-1">undefined</DisplayString>
+ <DisplayString>spec_._Myres[parsed_.scheme.begin][</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Username">
+ <DisplayString
+ Condition="parsed_.username.len==-1">undefined</DisplayString>
+ <DisplayString>spec_._Myres[parsed_.username.begin][</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Password">
+ <DisplayString
+ Condition="parsed_.password.len==-1">undefined</DisplayString>
+ <DisplayString>spec_._Myres[parsed_.password.begin][</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Host">
+ <DisplayString
+ Condition="parsed_.host.len==-1">undefined</DisplayString>
+ <DisplayString>spec_._Myres[parsed_.host.begin][</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Port">
+ <DisplayString
+ Condition="parsed_.port.len==-1">undefined</DisplayString>
+ <DisplayString>spec_._Myres[parsed_.port.begin][</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Path">
+ <DisplayString
+ Condition="parsed_.path.len==-1">undefined</DisplayString>
+ <DisplayString>spec_._Myres[parsed_.path.begin][</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Query">
+ <DisplayString
+ Condition="parsed_.query.len==-1">undefined</DisplayString>
+ <DisplayString>spec_._Myres[parsed_.query.begin][</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Ref">
+ <DisplayString Condition="parsed_.ref.len==-1">undefined</DisplayString>
+ <DisplayString>spec_._Myres[parsed_.ref.begin][</DisplayString>
+ </Synthetic>
+ </Expand>
+ </Type>
+ <Type Name="base::Value">
+ <DisplayString>{type_}</DisplayString>
+ <Expand>
+ <Item Name="Type">type_</Item>
+ </Expand>
+ </Type>
+ <Type Name="base::FundamentalValue">
+ <DisplayString>Fundamental</DisplayString>
+ <Expand>
+ <ExpandedItem>(base::Value*)this,nd</ExpandedItem>
+ <Item Name="Int">integer_value_</Item>
+ <Item Name="Bool">boolean_value_</Item>
+ <Item Name="Double">double_value_</Item>
+ </Expand>
+ </Type>
+ <Type Name="base::StringValue">
+ <DisplayString>String ({value_})</DisplayString>
+ <Expand>
+ <ExpandedItem>(base::Value*)this,nd</ExpandedItem>
+ <Item Name="Value">value_</Item>
+ </Expand>
+ </Type>
+ <Type Name="base::BinaryValue">
+ <DisplayString>Binary ({size_} byte(s))</DisplayString>
+ <Expand>
+ <ExpandedItem>(base::Value*)this,nd</ExpandedItem>
+ <Item Name="Data">buffer_</Item>
+ </Expand>
+ </Type>
+ <Type Name="base::DictionaryValue">
+ <DisplayString>Dictionary ({dictionary_._Mysize} entries)</DisplayString>
+ <Expand>
+ <ExpandedItem>dictionary_</ExpandedItem>
+ </Expand>
+ </Type>
+ <Type Name="base::ListValue">
+ <DisplayString>List ({list_._Mysize} entries)</DisplayString>
+ <Expand>
+ <ExpandedItem>list_</ExpandedItem>
+ </Expand>
+ </Type>
+</AutoVisualizer> \ No newline at end of file
diff --git a/tools/win/DebugVisualizers/skia.natvis b/tools/win/DebugVisualizers/skia.natvis
new file mode 100644
index 0000000..2254a47
--- /dev/null
+++ b/tools/win/DebugVisualizers/skia.natvis
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<AutoVisualizer
+ xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+ <Type Name="SkPoint">
+ <AlternativeType Name="SkIPoint"/>
+ <DisplayString>({fX}, {fY})</DisplayString>
+ <Expand>
+ <Item Name="X">fX</Item>
+ <Item Name="Y">fY</Item>
+ </Expand>
+ </Type>
+ <Type Name="SkSize">
+ <DisplayString>({fWidth}, {fHeight})</DisplayString>
+ <Expand>
+ <Item Name="Width">fWidth</Item>
+ <Item Name="Height">fHeight</Item>
+ </Expand>
+ </Type>
+ <Type Name="SkRect">
+ <AlternativeType Name="SkIRect"/>
+ <DisplayString>({fLeft}, {fTop}) x ({fRight - fLeft}, {fBottom - fTop})</DisplayString>
+ <Expand>
+ <Item Name="Left">fLeft</Item>
+ <Item Name="Top">fTop</Item>
+ <Item Name="Right">fRight</Item>
+ <Item Name="Bottom">fBottom</Item>
+ <Synthetic Name="Width">
+ <DisplayString>{fRight - fLeft}</DisplayString>
+ </Synthetic>
+ <Synthetic Name="Height">
+ <DisplayString>{fBottom - fTop}</DisplayString>
+ </Synthetic>
+ </Expand>
+ </Type>
+</AutoVisualizer> \ No newline at end of file
diff --git a/tools/win/DebugVisualizers/webkit.natvis b/tools/win/DebugVisualizers/webkit.natvis
new file mode 100644
index 0000000..de7f175
--- /dev/null
+++ b/tools/win/DebugVisualizers/webkit.natvis
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<AutoVisualizer
+ xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+ <Type Name="WTF::String">
+ <DisplayString Condition="m_impl.m_ptr == 0">(null)</DisplayString>
+ <DisplayString>{*m_impl.m_ptr}</DisplayString>
+ <Expand>
+ <Item Name="Impl">m_impl.m_ptr</Item>
+ </Expand>
+ </Type>
+ <Type Name="WTF::StringImpl">
+ <DisplayString
+ Condition="m_is8Bit">[{m_length}] {(this+1),sb}</DisplayString>
+ <DisplayString>[{m_length}] {(this+1),su}</DisplayString>
+ <Expand>
+ <Item Name="Length">m_length</Item>
+ <Item Name="Hash">m_hash</Item>
+ <Item Name="AsciiText" Condition="m_is8Bit">(this+1),sb</Item>
+ <Item Name="UnicodeText" Condition="!m_is8Bit">(this+1),su</Item>
+ </Expand>
+ </Type>
+ <Type Name="WTF::Vector&lt;*&gt;">
+ <DisplayString Condition="m_size==0">(empty)</DisplayString>
+ <DisplayString Condition="m_size==1">[{m_size}] {m_buffer,1}</DisplayString>
+ <DisplayString Condition="m_size==2">[{m_size}] {m_buffer,2}</DisplayString>
+ <DisplayString Condition="m_size==3">[{m_size}] {m_buffer,3}</DisplayString>
+ <DisplayString Condition="m_size==4">[{m_size}] {m_buffer,4}</DisplayString>
+ <DisplayString
+ Condition="m_size>=5">[{m_size}] {m_buffer,4}...</DisplayString>
+ <Expand>
+ <Item Name="Buffer">m_buffer</Item>
+ <Item Name="Size">m_size</Item>
+ <Item Name="Capacity">m_capacity</Item>
+ <ArrayItems Condition="m_size>0">
+ <Size>m_size</Size>
+ <ValuePointer>m_buffer</ValuePointer>
+ </ArrayItems>
+ </Expand>
+ </Type>
+ <Type Name="WTF::RefPtr&lt;*&gt;">
+ <AlternativeType Name="WTF::PassRefPtr&lt;*&gt;"/>
+ <DisplayString Condition="m_ptr == 0">null</DisplayString>
+ <DisplayString>{*m_ptr}</DisplayString>
+ <Expand>
+ <Item Name="Ptr">m_ptr</Item>
+ </Expand>
+ </Type>
+ <Type Name="WebCore::LayoutUnit">
+ <DisplayString>{(float)m_value / kFixedPointDenominator}</DisplayString>
+ <Expand>
+ <Item Name="FloatVal">(float)m_value / kFixedPointDenominator</Item>
+ <Item Name="RawVal">m_value</Item>
+ </Expand>
+ </Type>
+ <Type Name="WebCore::LayoutSize">
+ <AlternativeType Name="WebCore::IntSize"/>
+ <AlternativeType Name="WebCore::FloatSize"/>
+ <DisplayString>({m_width}, {m_height})</DisplayString>
+ <Expand>
+ <Item Name="Width">m_width</Item>
+ <Item Name="Height">m_height</Item>
+ </Expand>
+ </Type>
+ <Type Name="WebCore::LayoutPoint">
+ <AlternativeType Name="WebCore::IntPoint"/>
+ <AlternativeType Name="WebCore::FloatPoint"/>
+ <DisplayString>({m_x}, {m_y})</DisplayString>
+ <Expand>
+ <Item Name="X">m_x</Item>
+ <Item Name="Y">m_y</Item>
+ </Expand>
+ </Type>
+ <Type Name="WebCore::LayoutRect">
+ <AlternativeType Name="WebCore::IntRect"/>
+ <AlternativeType Name="WebCore::FloatRect"/>
+ <DisplayString>({m_location.m_x}, {m_location.m_y}) x ({m_size.m_width}, {m_size.m_height})</DisplayString>
+ <Expand>
+ <Item Name="Location">m_location</Item>
+ <Item Name="Size">m_size</Item>
+ </Expand>
+ </Type>
+ <Type Name="blink::WebRect">
+ <AlternativeType Name="blink::WebFloatRect"/>
+ <DisplayString>({x}, {y}) x ({width}, {height})</DisplayString>
+ <Expand>
+ <Item Name="x">x</Item>
+ <Item Name="y">x</Item>
+ <Item Name="width">x</Item>
+ <Item Name="height">x</Item>
+ <Synthetic Name="right">
+ <DisplayString>{x + width}</DisplayString>
+ </Synthetic>
+ <Synthetic Name="bottom">
+ <DisplayString>{y + height}</DisplayString>
+ </Synthetic>
+ </Expand>
+ </Type>
+ <Type Name="blink::WebPoint">
+ <AlternativeType Name="blink::WebFloatPoint"/>
+ <DisplayString>({x}, {y})</DisplayString>
+ <Expand>
+ <Item Name="x">x</Item>
+ <Item Name="y">y</Item>
+ </Expand>
+ </Type>
+</AutoVisualizer> \ No newline at end of file