[libvirt] gdb works abnormally when debug the libvirt.

Michal Privoznik mprivozn at redhat.com
Tue Nov 29 10:41:25 UTC 2011


On 29.11.2011 11:32, ShaoHe Feng wrote:
> When I  to use gdb to check whether qemuMonitorJSONIOProcessEvent
> processes the Event that I expect.
> 
> but the gdb works  abnormally.
> I list the the position of the source file by gdb. It is the correct
> functionqemuMonitorJSONIOProcessEvent.
> However I set break point on this  position. then "info b", it is the
> wrong function qemuMonitorJSONIOProcess.
> 
> I debug my libvirt on Ubuntu 11.10 this time.But I have set  a break
> point at this function on redhat 6.0 before, it can work well.
> 
> My gcc version is: gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
> My gdb version is: GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08
> 
> here is the info:
> 
> (gdb) list qemu/qemu_monitor_json.c:88
> 83    qemuMonitorJSONIOProcessEvent(qemuMonitorPtr mon,
> 84                                  virJSONValuePtr obj)
> 85    {
> 86        const char *type;
> 87        int i;
> 88        int findEventFlag = -1;
> 89        VIR_DEBUG("mon=%p obj=%p", mon, obj);
> 90   
> 91        type = virJSONValueObjectGetString(obj, "event");
> 92        if (!type) {
> 
> 
> 
> (gdb) b qemu/qemu_monitor_json.c:88
> Breakpoint 5 at 0x4a18d4: file qemu/qemu_monitor_json.c, line 88.
> (gdb) info b
> Num     Type           Disp Enb Address            What
> 5       breakpoint     keep y   0x00000000004a18d4 in
> qemuMonitorJSONIOProcess at qemu/qemu_monitor_json.c:88
> (gdb)
> 
> 

This may be caused by libvirtd being compiled with -O2; You want to turn
that off:
1) get libvirt sources, unpack them and cd <unpacked sources>
2) export CFLAGS='-O0'
3) ./autogen --system && make

Now you should have libvirtd in ./daemon/libvirtd; However, this is
libtool wrapper script. So you won't succeed running it directly (gdb
./daemon/libvirtd); I personally use attach: gdb -p $(pgrep libvirtd);
NB, you should shutdown your system libvirtd: service libvirtd shutdown

Michal




More information about the libvir-list mailing list