[Qemu-devel] Problems with gdbserver and debugging
From:
Andre Pech
Subject:
[Qemu-devel] Problems with gdbserver and debugging
Date:
Wed, 21 Dec 2005 18:43:31 -0800
Hi,
I'm running into problems using qemu to debug a kernel module. My host
and virtual machine are both x86 running Fedora Core 4. After insmoding
the module in the virtual machine, starting gdbserver, running gdb on
the host with the module sections loaded at the right place, and
setting a breakpoint in the module code, gdb does not always get
notified when the code is exectuted. After adding debugging statements
to qemu, I've experienced the following two different failure cases:
1) The breakpoint is set, but
translate.c:gen_intermediate_code_internal is not being called for the
breakpoint address. If I understand things correctly, this suggests
that the translation block invalidation code which is executed each
time a breakpoint is set has a problem in it.
2) translate.c:gen_intermetiate_code_internal is called on the address
where the breakpoint is set, and gen_debug is called. However, gdb does
not break into the code. With DEBUG_GDB set, you can see that the
gdbstub code isn't doing anything in this case, so the gdb process i am
running is never notified that the breakpoint was hit.
Both of these cases occur frequently, but not every time. I can run
gdb, have it break correctly, kill gdb (after disabling the breakpoint
and continuing), then start gdb again and have it fail.
I'm going to keep trying to debug this, but I was hoping that someone
might have some insight into what is going on here. I have not upgraded
to qemu 0.8.0 yet, but i couldn't find anything that suggested that
this would fix the problem. Has anyone else run into similar problems?