Difference between revisions of "Debugging Qemu"

From stoney cloud
Jump to: navigation, search
[unchecked revision][unchecked revision]
(Created page with "Sometimes you must be able to analyse Qemu more in-depth than the log files allow to. For this, one can attach a <code>gdb</code> instance to a running Qemu process if it is ...")
 
Line 18: Line 18:
  
 
and then start the VM.
 
and then start the VM.
 +
 +
The GDB session then looks like this:
 +
 +
<pre>
 +
~ # gdb
 +
GNU gdb (Gentoo 7.6.2 p1) 7.6.2
 +
Copyright (C) 2013 Free Software Foundation, Inc.
 +
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 +
This is free software: you are free to change and redistribute it.
 +
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
 +
and "show warranty" for details.
 +
This GDB was configured as "x86_64-pc-linux-gnu".
 +
For bug reporting instructions, please see:
 +
<http://bugs.gentoo.org/>.
 +
(gdb) file /usr/bin/qemu-system-
 +
/usr/bin/qemu-system-: No such file or directory.
 +
(gdb) file /usr/bin/qemu-system-x86_64
 +
Reading symbols from /usr/bin/qemu-system-x86_64...Reading symbols from /usr/lib64/debug/usr/bin/qemu-system-x86_64.debug...done.
 +
done.
 +
(gdb) target remote localhost:1234
 +
Remote debugging using localhost:1234
 +
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib64/debug/lib64/ld-2.17.so.debug...(no debugging symbols found)...done.
 +
(no debugging symbols found)...done.
 +
Loaded symbols for /lib64/ld-linux-x86-64.so.2
 +
0xfffff8003d7ab25f in _start () from /lib64/ld-linux-x86-64.so.2
 +
(gdb) c
 +
Continuing.
 +
</pre>
  
 
[[Category:Snippets]]
 
[[Category:Snippets]]

Revision as of 15:07, 5 June 2014

Sometimes you must be able to analyse Qemu more in-depth than the log files allow to.

For this, one can attach a gdb instance to a running Qemu process if it is started with the -s option.

To pass the required option from libvirt down to Qemu, one can use an additional namespace to pass along options to Qemu as descripted in the libvirt wiki.

Simply replace at the beginning of the XML (for example when editing using virsh edit):

<domain type='kvm'>

by

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <qemu:commandline><qemu:arg value='-s'/></qemu:commandline>

and then start the VM.

The GDB session then looks like this:

~ # gdb
GNU gdb (Gentoo 7.6.2 p1) 7.6.2
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>.
(gdb) file /usr/bin/qemu-system-
/usr/bin/qemu-system-: No such file or directory.
(gdb) file /usr/bin/qemu-system-x86_64 
Reading symbols from /usr/bin/qemu-system-x86_64...Reading symbols from /usr/lib64/debug/usr/bin/qemu-system-x86_64.debug...done.
done.
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib64/debug/lib64/ld-2.17.so.debug...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
0xfffff8003d7ab25f in _start () from /lib64/ld-linux-x86-64.so.2
(gdb) c
Continuing.