TL;DR: Install libwebkitgtk-3.0-0-dbg , then you have the necessary debug symbols.
##For debug symbols, you don't usually have to install from source.
As you know, to get debug symbols for software you're building yourself, you can run GCC with -g
.
For software installed through your operating system's package manager (which includes libwebkitgtk-3.0-0
, here), at least for official packages, there are usually also packages providing debug symbols.
You don't actually need to have a debug build of a program or library to get a symbolic stack trace in gdb
. gdb
also supports files providing "add-on" debug symbols in /usr/lib/debug
.
You use Ubuntu, according to the tags on your question. On Ubuntu, debug symbol packages are available in two varieties: -dbg
and -dbgsym
. A program or library located at /path
gets debug symbols at /usr/lib/debug/path
.
##-dbg
Packages
These packages are often named differently from the corresponding packages providing the actual executables or library files. They are often named similarly to -dev
packages (which provide header files) and -doc
packages. A -dbg
package sometimes has less library version numbering in the name than the actual library packages, sometimes covering binaries provided in multiple other packages.
For example, libgtkmm-3.0-1
's corresponding -dbg
package is libgtkmm-3.0-dbg
.
On the other hand, sometimes a -dbg
package is named the same as the package whose symbols it provides (except the -dbg
suffix). For example, libwebkitgtk-3.0-0
's corresponding -dbg
package is libwebkitgtk-3.0-0-dbg
. That's the one you want.
You can install it in the Software Center or by running:
sudo apt-get update && sudo apt-get install libwebkitgtk-3.0-0-dbg
Now, when you debug a program that links to a library provided by libwebkitgtk-3.0-0
, gdb
will automatically load symbols from a file provided by libwebkitgtk-3.0-0-dbg
.
##-dbgsym
Packages
Sometimes binary executables provided by an official package don't have symbols provided in any -dbg
package. When this happens, usually you can install the -dbgsym
package.
Unlike -dbg
packages, -dbgsym
packages:
- are almost always simply (and predictably) named
X-dbgsym
where X
is the package providing the program or library itself.
- are provided by special software sources (repositories), not the same software sources as provide the corresponding program/library packages and
-dbg
packages.
Since -dbgsym
packages are in separate repositories, you must enable these repositories. Their DEB lines are:
deb http://ddebs.ubuntu.com YOUR_RELEASE main restricted universe multiverse
deb http://ddebs.ubuntu.com YOUR_RELEASE-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com YOUR_RELEASE-security main restricted universe multiverse
deb http://ddebs.ubuntu.com YOUR_RELEASE-proposed main restricted universe multiverse
To enable them, you can run these commands (adapted from DebuggingProgramCrash by "Contributors to the Ubuntu documentation wiki", section 2):
echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-security main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse
" | sudo tee -a /etc/apt/sources.list.d/ddebs.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01
sudo apt-get update
Leave out the italicized lines, if you are on a development release (alpha or beta). Make sure to add them if you continue using the release once stable, though.
Those commands do three things:
- Create the file
/etc/apt/sources.list.d/ddebs.list
(which contains the DEB lines).
- Import the signing key for these repositories.
- Update your system's information about what packages and versions are available for installation from where.
So if you ever want to use the -dbgsym
-provided symbols instead of the -dbg
provided symbols, the -dbgsym
package for libwebkitgtk-3.0-0
is (in accordance with the simple naming convention above) libwebkitgtk-3.0-0-dbgsym
.
You can have both -dbg
and -dbgsym
packages installed on the same system, but not if they provide symbols for any of the same files. So libwebkitgtk-3.0-0-dbg
and libwebkitgtk-3.0-0-dbgsym
conflict with each other; they cannot both be installed (at the same time).
##Using the Symbols
On most Unix-like OSes, the debugger will automatically look for installed symbols. Ubuntu is no different--in Ubuntu, gdb
automatically looks for them in /usr/lib/debug
. So you don't need to do anything special.
However, if you ever did need to tell gdb
to load a specific debug symbol file, you would use the -s file
flag. See the GNU manual and gdb(1) for details.