Difference between revisions of "Gecko:Debugging Tools"

From MozillaWiki
Jump to: navigation, search
(Printing nsIAtoms)
(add bz's gdbinit)
Line 1: Line 1:
 +
== .gdbinit ==
 +
 +
[http://web.mit.edu/bzbarsky/www/gdbinit bz's gdbinit]
 +
 
== Frame Tree Dump ==
 
== Frame Tree Dump ==
  
Line 12: Line 16:
  
 
<bz> That should work when called on any nsIFrame to dump the tree it belongs to
 
<bz> That should work when called on any nsIFrame to dump the tree it belongs to
 
  
 
== Printing nsIAtoms ==
 
== Printing nsIAtoms ==

Revision as of 04:14, 14 July 2007

.gdbinit

bz's gdbinit

Frame Tree Dump

<bz> for a frame dump, you can use the layout debugger, or... if you're in a debugger and want to examine the tree, you can do

def frametree
  set $r = ($arg0)->PresContext()->GetPresShell()->GetRootFrame()
  if ($r)
    call ((class nsIFrameDebug*)(class ViewportFrame*)$r)->List(stderr, 2)
  end
end


<bz> That should work when called on any nsIFrame to dump the tree it belongs to

Printing nsIAtoms

<bz> To print an nsIAtom, you see what concrete type it is using "set print object on", then cast it to that type, etc

<bz> if it's an nsStaticAtom:

 def satom
   p *((class nsStaticAtomWrapper*)$arg0)->mStaticAtom
 end

<bz> to be used as: satom content->Tag() or satom frame->GetType()

<bz> for nsGkAtoms it'll work great

Reflow Logs

See [Debugging Frame Reflow]