Difference between revisions of "Debugging"

From CRIU
Jump to navigation Jump to search
 
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
== Raise verbosity ==
 +
 +
Make sure you use the <code>-v4</code> option for extended [[logging]] and find logs in the work/images [[directories]].
 +
 +
== Getting core files ==
 +
 +
If CRIU crashes it's useful to build it with debug info and look into core file.
 +
 +
* build CRIU with debug info <code>make DEBUG=1</code>
 +
* setup core file generation which depends on distro settings, usually the core generation template is sitting in /proc/sys/kernel/core_pattern, see more details at [http://man7.org/linux/man-pages/man5/core.5.html core.5]
 +
 +
Then upload core file into debugger <code>gdb criu core-file</code> and type <code>bt</code> command to fetch a backtrace.
 +
 +
== Docker C/R ==
 +
 +
Docker keeps images in and logs in <code>/var/lib/docker/containers//checkpoints/chp_/criu.work/</code>
 +
 +
== Tracing ==
 +
 +
CRIU uses ptrace(), so strace can't be used in some cases. perf trace is an alternative way. It isn't so informative, but it is still better than nothing.
 +
 +
== Images ==
 +
 +
The [[CRIT]] tool can help to decode [[images]] into a human readable format.
 +
 
[[Category:Using]]
 
[[Category:Using]]
 
[[Category:Development]]
 
[[Category:Development]]
 
[[Category:HOWTO]]
 
[[Category:HOWTO]]

Latest revision as of 09:48, 16 February 2017

Raise verbosity[edit]

Make sure you use the -v4 option for extended logging and find logs in the work/images directories.

Getting core files[edit]

If CRIU crashes it's useful to build it with debug info and look into core file.

  • build CRIU with debug info make DEBUG=1
  • setup core file generation which depends on distro settings, usually the core generation template is sitting in /proc/sys/kernel/core_pattern, see more details at core.5

Then upload core file into debugger gdb criu core-file and type bt command to fetch a backtrace.

Docker C/R[edit]

Docker keeps images in and logs in /var/lib/docker/containers//checkpoints/chp_/criu.work/

Tracing[edit]

CRIU uses ptrace(), so strace can't be used in some cases. perf trace is an alternative way. It isn't so informative, but it is still better than nothing.

Images[edit]

The CRIT tool can help to decode images into a human readable format.