# Graphical Debugging Aid for Chromium Views

## Introduction

A simple debugging tool exists to help visualize the views tree during
debugging. It consists of 4 components:

1.  The function `View::PrintViewGraph()` (already in the file `view.cc` if
    you've sync'd recently),
1.  a gdb script file `viewg.gdb` (see below),
1.  the graphViz package (http://www.graphviz.org/ - downloadable for Linux,
    Windows and Mac), and
1.  an SVG viewer (_e.g._ Chrome).

## Details

To use the tool,

1.  Make sure you have 'dot' installed (part of graphViz),
1.  define `TOUCH_DEBUG` and compile chrome with Views enabled,
1.  run gdb on your build and
1.  `source viewg.gdb` (this can be done automatically in `.gdbinit`),
1.  stop at any breakpoint inside class `View` (or any derived class), and
1.  type `viewg` at the gdb prompt.

This will cause the current view, and any descendants, to be described in a
graph which is stored as `~/state.svg` (Windows users may need to modify the
script slightly to run under CygWin). If `state.svg` is kept open in a browser
window and refreshed each time `viewg` is run, then it provides a graphical
representation of the state of the views hierarchy that is always up to date.

It is easy to modify the gdb script to generate PDF in case viewing with evince
(or other PDF viewer) is preferred.

If you don't use gdb, you may be able to adapt the script to work with your
favorite debugger. The gdb script invokes

    this->PrintViewGraph(true)

on the current object, returning `std::string`, whose contents must then be
saved to a file in order to be processed by dot.

## viewg.gdb

```
define viewg
  if $argc != 0
    echo Usage: viewg
  else
    set pagination off
    set print elements 0
    set logging off
    set logging file ~/state.dot
    set logging overwrite on
    set logging redirect on
    set logging on
    printf "%s\n", this->PrintViewGraph(true).c_str()
    set logging off
    shell dot -Tsvg -o ~/state.svg ~/state.dot
    set pagination on
  end
end
```
