# Linux Debugging GTK

## Making warnings fatal

See
[Running GLib Applications](http://developer.gnome.org/glib/stable/glib-running.html)
for notes on how to make GTK warnings fatal.

## Using GTK Debug packages

    sudo apt-get install libgtk-3-0-dbg

Make sure that you're building a binary that matches your architecture (e.g.
64-bit on a 64-bit machine), and there you go.

### Source

You'll likely want to get the source for gtk too so that you can step through
it. You can tell gdb that you've downloaded the source to your system's GTK by
doing:

```shell
$ cd /my/dir
$ apt-get source libgtk-3-0
$ gdb ...
(gdb) set substitute-path /build/buildd /my/dir
```

NOTE: I tried debugging pango in a similar manner, but for some reason gdb
didn't pick up the symbols from the symbols from the `-dbg` package. I ended up
building from source and setting my `LD_LIBRARY_PATH`.

See [linux_building_debug_gtk.md](linux_building_debug_gtk.md) for more on how
to build your own debug version of GTK.

## Parasite

http://chipx86.github.com/gtkparasite/ is great. Go check out the site for more
about it.

Install it with

    sudo apt-get install gtkparasite

And then run Chrome with

    GTK_MODULES=gtkparasite ./out/Debug/chrome

## GDK_DEBUG

Use `GDK_DEBUG=nograbs` to run GTK+ without grabs. This is useful for gdb
sessions.
