| OLD | NEW |
| 1 # Introduction | 1 # Graphical Debugging Aid for Chromium Views |
| 2 | 2 |
| 3 A simple debugging tool exists to help visualize the views tree during debugging
. It consists of 4 components: | 3 ## Introduction |
| 4 | 4 |
| 5 1. The function `View::PrintViewGraph()` (already in the file **view.cc** if y
ou've sync'd recently), | 5 A simple debugging tool exists to help visualize the views tree during |
| 6 1. a gdb script file **viewg.gdb** (see below), | 6 debugging. It consists of 4 components: |
| 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 | 7 |
| 10 # Details | 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, |
| 12 Windows and Mac), and |
| 13 1. an SVG viewer (_e.g._ Chrome). |
| 14 |
| 15 ## Details |
| 11 | 16 |
| 12 To use the tool, | 17 To use the tool, |
| 13 | 18 |
| 14 1. Make sure you have 'dot' installed (part of graphViz), | 19 1. Make sure you have 'dot' installed (part of graphViz), |
| 15 1. define `TOUCH_DEBUG` and compile chrome with Views enabled, | 20 1. define `TOUCH_DEBUG` and compile chrome with Views enabled, |
| 16 1. run gdb on your build and | 21 1. run gdb on your build and |
| 17 1. source **viewg.gdb** (this can be done automatically in **.gdbinit**), | 22 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 | 23 1. stop at any breakpoint inside class `View` (or any derived class), and |
| 19 1. type `viewg` at the gdb prompt. | 24 1. type `viewg` at the gdb prompt. |
| 20 | 25 |
| 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. | 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. |
| 22 | 31 |
| 23 It is easy to modify the gdb script to generate PDF in case viewing with evince
(or other PDF viewer) is preferred. | 32 It is easy to modify the gdb script to generate PDF in case viewing with evince |
| 33 (or other PDF viewer) is preferred. |
| 24 | 34 |
| 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 | 35 If you don't use gdb, you may be able to adapt the script to work with your |
| 26 ``` | 36 favorite debugger. The gdb script invokes |
| 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 | 37 |
| 31 # viewg.gdb | 38 this->PrintViewGraph(true) |
| 39 |
| 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. |
| 42 |
| 43 ## viewg.gdb |
| 32 | 44 |
| 33 ``` | 45 ``` |
| 34 define viewg | 46 define viewg |
| 35 if $argc != 0 | 47 if $argc != 0 |
| 36 echo Usage: viewg | 48 echo Usage: viewg |
| 37 else | 49 else |
| 38 set pagination off | 50 set pagination off |
| 39 set print elements 0 | 51 set print elements 0 |
| 40 set logging off | 52 set logging off |
| 41 set logging file ~/state.dot | 53 set logging file ~/state.dot |
| 42 set logging overwrite on | 54 set logging overwrite on |
| 43 set logging redirect on | 55 set logging redirect on |
| 44 set logging on | 56 set logging on |
| 45 printf "%s\n", this->PrintViewGraph(true).c_str() | 57 printf "%s\n", this->PrintViewGraph(true).c_str() |
| 46 set logging off | 58 set logging off |
| 47 shell dot -Tsvg -o ~/state.svg ~/state.dot | 59 shell dot -Tsvg -o ~/state.svg ~/state.dot |
| 48 set pagination on | 60 set pagination on |
| 49 end | 61 end |
| 50 end | 62 end |
| 51 ``` | 63 ``` |
| OLD | NEW |