OLD | NEW |
(Empty) | |
| 1 # Introduction |
| 2 |
| 3 A simple debugging tool exists to help visualize the views tree during debugging
. It consists of 4 components: |
| 4 |
| 5 1. The function `View::PrintViewGraph()` (already in the file **view.cc** if y
ou've sync'd recently), |
| 6 1. a gdb script file **viewg.gdb** (see below), |
| 7 1. the graphViz package (http://www.graphviz.org/ - downloadable for Linux, Wi
ndows and Mac), and |
| 8 1. an SVG viewer (_e.g._ Chrome). |
| 9 |
| 10 # Details |
| 11 |
| 12 To use the tool, |
| 13 |
| 14 1. Make sure you have 'dot' installed (part of graphViz), |
| 15 1. define `TOUCH_DEBUG` and compile chrome with Views enabled, |
| 16 1. run gdb on your build and |
| 17 1. source **viewg.gdb** (this can be done automatically in **.gdbinit**), |
| 18 1. stop at any breakpoint inside class `View` (or any derived class), and |
| 19 1. type `viewg` at the gdb prompt. |
| 20 |
| 21 This will cause the current view, and any descendants, to be described in a grap
h which is stored as **~/state.svg** (Windows users may need to modify the scrip
t slightly to run under CygWin). If **state.svg** is kept open in a browser wind
ow and refreshed each time `viewg` is run, then it provides a graphical represen
tation of the state of the views hierarchy that is always up to date. |
| 22 |
| 23 It is easy to modify the gdb script to generate PDF in case viewing with evince
(or other PDF viewer) is preferred. |
| 24 |
| 25 If you don't use gdb, you may be able to adapt the script to work with your favo
rite debugger. The gdb script invokes |
| 26 ``` |
| 27 this->PrintViewGraph(true) |
| 28 ``` |
| 29 on the current object, returning `std::string`, whose contents must then be save
d to a file in order to be processed by dot. |
| 30 |
| 31 # viewg.gdb |
| 32 |
| 33 ``` |
| 34 define viewg |
| 35 if $argc != 0 |
| 36 echo Usage: viewg |
| 37 else |
| 38 set pagination off |
| 39 set print elements 0 |
| 40 set logging off |
| 41 set logging file ~/state.dot |
| 42 set logging overwrite on |
| 43 set logging redirect on |
| 44 set logging on |
| 45 printf "%s\n", this->PrintViewGraph(true).c_str() |
| 46 set logging off |
| 47 shell dot -Tsvg -o ~/state.svg ~/state.dot |
| 48 set pagination on |
| 49 end |
| 50 end |
| 51 ``` |
OLD | NEW |