| 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.
|
|
|