Index: docs/linux_building_debug_gtk.md |
diff --git a/docs/linux_building_debug_gtk.md b/docs/linux_building_debug_gtk.md |
index 75cdf93670c5f83d0303aaf2c6d889914d7b2d5c..dea311ef8695ee9888ed79fbc411c60692c49e80 100644 |
--- a/docs/linux_building_debug_gtk.md |
+++ b/docs/linux_building_debug_gtk.md |
@@ -1,64 +1,65 @@ |
-# Introduction |
+# Linux — Building and Debugging GTK |
Sometimes installing the debug packages for gtk and glib isn't quite enough. |
(For instance, if the artifacts from -O2 are driving you bonkers in gdb, you |
might want to rebuild with -O0.) |
-Here's how to build from source and use your local version without installing it. |
+Here's how to build from source and use your local version without installing |
+it. |
+ |
+[TOC] |
## 32-bit systems |
On Ubuntu, to download and build glib and gtk suitable for debugging: |
-1. If you don't have a gpg key yet, generate one with gpg --gen-key. |
- |
-2. Create file ~/.devscripts containing DEBSIGN\_KEYID=yourkey, e.g. |
-DEBSIGN\_KEYID=CC91A262 |
-(See http://www.debian.org/doc/maint-guide/ch-build.en.html |
- |
-3. If you're on a 32 bit system, do: |
-``` |
-#!/bin/sh |
-set -x |
-set -e |
-# Workaround for "E: Build-dependencies for glib2.0 could not be satisfied" |
-# See also https://bugs.launchpad.net/ubuntu/+source/apt/+bug/245068 |
-sudo apt-get install libgamin-dev |
-sudo apt-get build-dep glib2.0 gtk+2.0 |
-rm -rf ~/mylibs |
-mkdir ~/mylibs |
-cd ~/mylibs |
-apt-get source glib2.0 gtk+2.0 |
-cd glib2.0* |
-DEB_BUILD_OPTIONS="nostrip noopt debug" debuild |
-cd ../gtk+2.0* |
-DEB_BUILD_OPTIONS="nostrip noopt debug" debuild |
-``` |
-This should take about an hour. If it gets stuck waiting for a zombie, |
+1. If you don't have a gpg key yet, generate one with `gpg --gen-key`. |
+2. Create file `~/.devscripts` containing `DEBSIGN_KEYID=yourkey`, e.g. |
+ `DEBSIGN_KEYID=CC91A262` (See |
+ http://www.debian.org/doc/maint-guide/ch-build.en.html) |
+3. If you're on a 32 bit system, do: |
+ |
+ ```shell |
+ #!/bin/sh |
+ set -x |
+ set -e |
+ # Workaround for "E: Build-dependencies for glib2.0 could not be satisfied" |
+ # See also https://bugs.launchpad.net/ubuntu/+source/apt/+bug/245068 |
+ sudo apt-get install libgamin-dev |
+ sudo apt-get build-dep glib2.0 gtk+2.0 |
+ rm -rf ~/mylibs |
+ mkdir ~/mylibs |
+ cd ~/mylibs |
+ apt-get source glib2.0 gtk+2.0 |
+ cd glib2.0* |
+ DEB_BUILD_OPTIONS="nostrip noopt debug" debuild |
+ cd ../gtk+2.0* |
+ DEB_BUILD_OPTIONS="nostrip noopt debug" debuild |
+ ``` |
+ |
+This should take about an hour. If it gets stuck waiting for a zombie, |
you may have to kill its closest parent (the makefile uses subshells, |
-and bash seems to get confused). When I did this, it continued successfully. |
+and bash seems to get confused). When I did this, it continued successfully. |
At the very end, it will prompt you for the passphrase for your gpg key. |
Then, to run an app with those libraries, do e.g. |
-``` |
-export LD_LIBRARY_PATH=$HOME/mylibs/gtk+2.0-2.16.1/debian/install/shared/usr/lib:$HOME/mylibs/gtk+2.0-2.20.1/debian/install/shared/usr/lib |
-``` |
+ |
+ export LD_LIBRARY_PATH=$HOME/mylibs/gtk+2.0-2.16.1/debian/install/shared/usr/lib:$HOME/mylibs/gtk+2.0-2.20.1/debian/install/shared/usr/lib |
gdb ignores that variable, so in the debugger, you would have to do something like |
-``` |
-set solib-search-path $HOME/mylibs/gtk+2.0-2.16.1/debian/install/shared/usr/lib:$HOME/mylibs/gtk+2.0-2.20.1/debian/install/shared/usr/lib |
-``` |
+ |
+ set solib-search-path $HOME/mylibs/gtk+2.0-2.16.1/debian/install/shared/usr/lib:$HOME/mylibs/gtk+2.0-2.20.1/debian/install/shared/usr/lib |
See also http://sources.redhat.com/gdb/current/onlinedocs/gdb_17.html |
## 64-bit systems |
-If you're on a 64 bit systems, you can do the above on a 32 |
+If you're on a 64 bit system, you can do the above on a 32 |
bit system, and copy the result. Or try one of the following: |
### Building your own GTK |
-``` |
+```shell |
apt-get source glib-2.0 gtk+-2.0 |
export CFLAGS='-m32 -g' |
@@ -73,11 +74,12 @@ setarch i386 ./configure --prefix=/work/32 --enable-debug=yes |
setarch i386 ./configure --prefix=/work/32 --enable-debug=yes --without-libtiff |
``` |
- |
### ia32-libs |
+ |
_Note: Evan tried this and didn't get any debug libs at the end._ |
Or you could try this instead: |
+ |
``` |
#!/bin/sh |
set -x |
@@ -92,19 +94,20 @@ DEB_BUILD_OPTIONS="nostrip noopt debug" debuild |
``` |
By default, this just grabs and unpacks prebuilt libraries; see |
-ia32-libs-2.7ubuntu6/fetch-and-build which documents a BUILD |
-variable which would force actual building. |
-This would take way longer, since it builds dozens of libraries. |
-I haven't tried it yet. |
+ia32-libs-2.7ubuntu6/fetch-and-build which documents a BUILD variable which |
+would force actual building. This would take way longer, since it builds dozens |
+of libraries. I haven't tried it yet. |
#### Possible Issues |
debuild may fail with |
+ |
``` |
gpg: [stdin]: clearsign failed: secret key not available |
debsign: gpg error occurred! Aborting.... |
``` |
-if you forget to create ~/.devscripts with the right contents. |
-The build may fail with a "FAIL: abicheck.sh" if gold is your system |
-linker. Use ld instead. |
+if you forget to create `~/.devscripts` with the right contents. |
+ |
+The build may fail with a `FAIL: abicheck.sh` if gold is your system linker. Use |
+ld instead. |