diff options
author | zturner@chromium.org <zturner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-28 00:03:18 +0000 |
---|---|---|
committer | zturner@chromium.org <zturner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-28 00:03:18 +0000 |
commit | 8431e4e25b839614fe888637145bdb94eeda6796 (patch) | |
tree | 2ff0ff03775d560232b40e2fea58fa02c7d16a79 /tools/win | |
parent | e0391410239e63401da633aba7eddb2e53fe729f (diff) | |
download | chromium_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.natvis | 266 | ||||
-rw-r--r-- | tools/win/DebugVisualizers/skia.natvis | 35 | ||||
-rw-r--r-- | tools/win/DebugVisualizers/webkit.natvis | 106 |
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->_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<*,*>"> + <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<*>"> + <DisplayString Condition="ptr_ == 0">null</DisplayString> + <DisplayString>[{((base::subtle::RefCountedBase*)ptr_)->ref_count_}] {(void*)ptr_} {*ptr_}</DisplayString> + <Expand> + <Item Name="Ptr">ptr_</Item> + <Item Name="RefCount">((base::subtle::RefCountedBase*)ptr_)->ref_count_</Item> + </Expand> + </Type> + <Type Name="base::RefCounted<*>"> + <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 & IPC::Message::PRIORITY_MASK) == + IPC::Message::PRIORITY_LOW"> + <DisplayString>Low</DisplayString> + </Synthetic> + <Synthetic Name="Priority" + Condition="(flags & IPC::Message::PRIORITY_MASK) == + IPC::Message::PRIORITY_NORMAL"> + <DisplayString>Normal</DisplayString> + </Synthetic> + <Synthetic Name="Priority" + Condition="(flags & IPC::Message::PRIORITY_MASK) == + IPC::Message::PRIORITY_HIGH"> + <DisplayString>High</DisplayString> + </Synthetic> + <Synthetic Name="Sync" + Condition="(flags & IPC::Message::SYNC_BIT) != 0"> + <DisplayString>true</DisplayString> + </Synthetic> + <Synthetic Name="Sync" + Condition="(flags & IPC::Message::SYNC_BIT) == 0"> + <DisplayString>false</DisplayString> + </Synthetic> + <Synthetic Name="Reply" + Condition="(flags & IPC::Message::REPLY_BIT) != 0"> + <DisplayString>true</DisplayString> + </Synthetic> + <Synthetic Name="Reply" + Condition="(flags & IPC::Message::REPLY_BIT) == 0"> + <DisplayString>false</DisplayString> + </Synthetic> + <Synthetic Name="ReplyError" + Condition="(flags & IPC::Message::REPLY_ERROR_BIT) != 0"> + <DisplayString>true</DisplayString> + </Synthetic> + <Synthetic Name="ReplyError" + Condition="(flags & IPC::Message::REPLY_ERROR_BIT) == 0"> + <DisplayString>false</DisplayString> + </Synthetic> + <Synthetic Name="Unblock" + Condition="(flags & IPC::Message::UNBLOCK_BIT) != 0"> + <DisplayString>true</DisplayString> + </Synthetic> + <Synthetic Name="Unblock" + Condition="(flags & IPC::Message::UNBLOCK_BIT) == 0"> + <DisplayString>false</DisplayString> + </Synthetic> + <Synthetic Name="PumpingMessages" + Condition="(flags & IPC::Message::PUMPING_MSGS_BIT) != 0"> + <DisplayString>true</DisplayString> + </Synthetic> + <Synthetic Name="PumpingMessages" + Condition="(flags & IPC::Message::PUMPING_MSGS_BIT) == 0"> + <DisplayString>false</DisplayString> + </Synthetic> + <Synthetic Name="HasSentTime" + Condition="(flags & IPC::Message::HAS_SENT_TIME_BIT) != 0"> + <DisplayString>true</DisplayString> + </Synthetic> + <Synthetic Name="HasSentTime" + Condition="(flags & 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<*>"> + <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<*>"> + <AlternativeType Name="WTF::PassRefPtr<*>"/> + <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 |