Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(871)

Unified Diff: docs/graphical_debugging_aid_chromium_views.md

Issue 1309473002: WIP: Migrate Wiki content over to src/docs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « docs/gn_check.md ('k') | docs/gtk_vs_views_gtk.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/graphical_debugging_aid_chromium_views.md
diff --git a/docs/graphical_debugging_aid_chromium_views.md b/docs/graphical_debugging_aid_chromium_views.md
new file mode 100644
index 0000000000000000000000000000000000000000..ba593722c94078ce9aa1dc526eb3c31a8976b35f
--- /dev/null
+++ b/docs/graphical_debugging_aid_chromium_views.md
@@ -0,0 +1,51 @@
+# 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
+```
« no previous file with comments | « docs/gn_check.md ('k') | docs/gtk_vs_views_gtk.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698