DebuggingProgramCrash
ContentsBRTableOfContents |
This document describes how to install debug packages on Ubuntu, which will aid in providing information for bugs.
== Edgy Eft 6.10 == DEBUGGING SYMBOLS NO LONGER AVAILABLE FOR EDGY
Use this section only if you are using Ubuntu Edgy 6.10. See the following section if you are using a prior version.
1. Add the following line to /etc/apt/sources.list:
{{{deb http://people.ubuntu.com/~pitti/ddebs edgy main universe
}}}
2. Import Martin's public key to your keyring:
wget -q "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x0DE7276D5E0577F2" -O- | sudo apt-key add -
3. Then run
sudo apt-get update
to update your package list.
4. The debug symbol packages have the '-dbgsym' suffix attached, so to install the debug symbols for the package 'yelp', you run:
sudo apt-get install yelp-dbgsym
- Now you make a ["Backtrace"].
- You can also run ["Valgrind"], if the program crashes with a "Segmentation fault" or "Bus error".
- Optionally, you may be asked to produce an ["Strace"].
References
Feisty Fawn 7.04
The steps described above for Edgy also work for Feisty, just add the following line to /etc/apt/sources.list:
{{{deb http://people.ubuntu.com/~pitti/ddebs feisty main universe
}}}
Gutsy Gibbon 7.10
The steps described above for Edgy also work for Gutsy, just add the following line to '/etc/apt/sources.list' :
{{{deb http://people.ubuntu.com/~pitti/ddebs gutsy main universe
}}}
Prior Ubuntu versions
Use this section if you are using an Ubuntu version prior to Edgy 6.10.
Check if the package has a debugging version available. In general, debugging packages will be named with a -dbg suffix
- If not, you can generally* build one this way:
Something to keep in mind: if you would like to create a build you're going to need to have the relevant deb-src lines in your /etc/apt/sources.list
- Install the development scripts:
sudo apt-get install devscripts fakeroot
- Find out to which package your program belongs to:
dpkg --search <program>
- Install the build-time dependencies for the package:
sudo apt-get build-dep <package>
- Build .debs for debugging:
export DEB_BUILD_OPTIONS="debug nostrip noopt" fakeroot apt-get source -b <package>
- Install the needed .debs (they will be in the current working directory if the build succeeded):
sudo debi <package>*.changes
* Most packages support the build of debugging version in this way. If this process doesn't work for a package, please open a bug against it.
The Xorg server
The X server will by default trap its own crashes and dump a stack trace in /var/log/Xorg.0.log. However, this stack trace is modified by the signal handler itself. To get a "normal" crash, which will trigger a core dump (and apport reporting), add this to your /etc/X11/xorg.conf:
Section "ServerFlags" Option "NoTrapSignals" "true" EndSection
Info for the BugSquad
If you're trying to apport-retrace a crash report from a bug that didn't happen on the same Ubuntu release as the one you're running, do the following:
Say that you're running feisty and the crash happened on edgy:
This will create a minimal edgy system.
sudo mkdir -p /chroots/edgy sudo debootstrap edgy /chroots/edgy/
Now you change into this minimal edgy system.
sudo chroot /chroot/edgy
edit /etc/apt/sources/list and all the repositories you need, especially Martin's ddeb repository.
apt-get update; apt-get install gdb apport
use apport-retrace as you're used to.