Difference between revisions of "Core file"

From collectd Wiki
Jump to: navigation, search
(Created initial page.)
 
(Debugging symbols: New section.)
Line 6: Line 6:
 
* Wait until the daemon crashes again.
 
* Wait until the daemon crashes again.
 
* Inspect the ''core file'' to find the source of the problem.
 
* Inspect the ''core file'' to find the source of the problem.
 +
 +
== Debugging symbols ==
 +
 +
In order to get meaningful information from a ''core file'', the executable must be built with ''debugging symbols''.
 +
 +
=== From a package ===
 +
 +
The easiest way to obtain ''debugging symbols'' is by installing an appropriate debugging package. If you're using ''Debian'', you can install such a debugging package using:
 +
apt-get install collectd-dbg
 +
 +
Other distributions may provide debugging packages, too. If you know of such a distribution, please add the information here.
 +
 +
=== Compiler flags ===
 +
 +
If you installed collectd from source or your distribution doesn't provide a debugging package, you can recompile with the appropriate compiler flags.
 +
 +
The exact flags required depend on the compiler used. If you use the C compiler from the ''GNU Compiler Collection'' (GCC), the flag <code>-g</code> enables the inclusion of debugging symbols. While you're at it, disable optimization using <code>-O0</code>. This makes it easier to interpret the output of the debugger.
 +
 +
Pass the flags to the ''configure'' script using:
 +
$ ./configure ''$OTHER_FLAGS'' CFLAGS="-g -O0"
 +
 +
Other compilers may differ. If you know how, please add the information here.
  
 
[[Category:Development]]
 
[[Category:Development]]

Revision as of 11:49, 22 May 2010

A core file or core dump is a dump of the application state, including all memory contents, to the disk for further inspection. If collectd crashes due to a bug, the best way to debug this is via such a file. Using a debugger it is possible where exactly the problem occurred and under which circumstances.

In order to create and use a core file, you need to take the following steps:

  • Create an executable with debugging symbols embedded. You can either re-compile with special flags or install a debugging package if one is available.
  • Enable creation of core files.
  • Wait until the daemon crashes again.
  • Inspect the core file to find the source of the problem.

Debugging symbols

In order to get meaningful information from a core file, the executable must be built with debugging symbols.

From a package

The easiest way to obtain debugging symbols is by installing an appropriate debugging package. If you're using Debian, you can install such a debugging package using:

apt-get install collectd-dbg

Other distributions may provide debugging packages, too. If you know of such a distribution, please add the information here.

Compiler flags

If you installed collectd from source or your distribution doesn't provide a debugging package, you can recompile with the appropriate compiler flags.

The exact flags required depend on the compiler used. If you use the C compiler from the GNU Compiler Collection (GCC), the flag -g enables the inclusion of debugging symbols. While you're at it, disable optimization using -O0. This makes it easier to interpret the output of the debugger.

Pass the flags to the configure script using:

$ ./configure $OTHER_FLAGS CFLAGS="-g -O0"

Other compilers may differ. If you know how, please add the information here.