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

Unified Diff: docs/linux_building_debug_gtk.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
Index: docs/linux_building_debug_gtk.md
diff --git a/docs/linux_building_debug_gtk.md b/docs/linux_building_debug_gtk.md
new file mode 100644
index 0000000000000000000000000000000000000000..75cdf93670c5f83d0303aaf2c6d889914d7b2d5c
--- /dev/null
+++ b/docs/linux_building_debug_gtk.md
@@ -0,0 +1,110 @@
+# Introduction
+
+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.
+
+## 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,
+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.
+
+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
+```
+
+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
+```
+
+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
+bit system, and copy the result. Or try one of the following:
+
+### Building your own GTK
+
+```
+apt-get source glib-2.0 gtk+-2.0
+
+export CFLAGS='-m32 -g'
+export LDFLAGS=-L/usr/lib32
+export LD_LIBRARY_PATH=/work/32/lib
+export PKG_CONFIG_PATH=/work/32/lib/pkgconfig
+
+# glib
+setarch i386 ./configure --prefix=/work/32 --enable-debug=yes
+
+# gtk
+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
+set -e
+sudo apt-get build-dep ia32-libs
+rm -rf ~/mylibs
+mkdir ~/mylibs
+cd ~/mylibs
+apt-get source ia32-libs
+cd ia32-libs*
+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.
+
+#### 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.

Powered by Google App Engine
This is Rietveld 408576698