1 # Graphical Debugging Aid for Chromium Views
5 A simple debugging tool exists to help visualize the views tree during
6 debugging. It consists of 4 components:
8 1. The function `View::PrintViewGraph()` (already in the file `view.cc` if
9 you've sync'd recently),
10 1. a gdb script file `viewg.gdb` (see below),
11 1. the graphViz package (http://www.graphviz.org/ - downloadable for Linux,
13 1. an SVG viewer (_e.g._ Chrome).
19 1. Make sure you have 'dot' installed (part of graphViz),
20 1. define `TOUCH_DEBUG` and compile chrome with Views enabled,
21 1. run gdb on your build and
22 1. `source viewg.gdb` (this can be done automatically in `.gdbinit`),
23 1. stop at any breakpoint inside class `View` (or any derived class), and
24 1. type `viewg` at the gdb prompt.
26 This will cause the current view, and any descendants, to be described in a
27 graph which is stored as `~/state.svg` (Windows users may need to modify the
28 script slightly to run under CygWin). If `state.svg` is kept open in a browser
29 window and refreshed each time `viewg` is run, then it provides a graphical
30 representation of the state of the views hierarchy that is always up to date.
32 It is easy to modify the gdb script to generate PDF in case viewing with evince
33 (or other PDF viewer) is preferred.
35 If you don't use gdb, you may be able to adapt the script to work with your
36 favorite debugger. The gdb script invokes
38 this->PrintViewGraph(true)
40 on the current object, returning `std::string`, whose contents must then be
41 saved to a file in order to be processed by dot.
53 set logging file ~/state.dot
54 set logging overwrite on
55 set logging redirect on
57 printf "%s\n", this->PrintViewGraph(true).c_str()
59 shell dot -Tsvg -o ~/state.svg ~/state.dot