RE: symbolic debug of loadable modules with kgdb light

Caz Yokoyama
2009-01-09T16:29:23Z

Right now gdb sends CTRL+C on start-up or when you interrupt the target
during runtime. For kgdb you had to replace this with the SysRq
sequence, right? But as qemu uses the standard way of interruption, this
replacement would have to be disabled again (probably via some "set
whatever-variable") - mmh, unless it is only coupled to serial line
links (QEMU works via TCP). In that case forget my question.
-----------
Whether my gdb sends BREAK+g on startup is determined by whether target
program is vmlinux. As you said, whether CTRL+C or BREAK is determined by
remote_break. remote_break is set and showed by set and show command. If
remote_break is enum {Ctl_C, BREAK, BREAK_g}, what's happen. I'll try.

-----Original Message-----
From: jan.kiszka@web.de [mailto:jan.kiszka@web.de]
Sent: Friday, January 09, 2009 4:38 AM
To: Caz Yokoyama
Cc: gdb@sourceware.org
Subject: Re: symbolic debug of loadable modules with kgdb light

Caz Yokoyama wrote:
> Hello,
> Did you happen to try the former extension with the QEMU or KVM backend
> already?
> ---
> No. I am glad if you tell me how to do that. I saw a paper which talked
> about running kgdb for guest OS of Xen.

AFAIK, Xen's gdbserver is not that advanced as the one of QEMU or KVM.
Both support hardware watchpoints/breakpoints now and present guest CPUs
as threads to the frontend.

> (http://www.kernel.org/doc/ols/2006/ols2006v2-pages-9-24.pdf). I know
there
> is serial console in Virtual Machine Manager, i.e. select Guest OS ->
> Details -> view -> serial console. But I have no idea how to connect it.

Start qemu (or qemu-system-x86_64) with -s as additional switch, using
some Linux system image that will boot the kernel you want to debug.
Then fire up "gdb vmlinux" and connect via "tar re :1234" to qemu's
gdbserver (once the kernel is booting, otherwise you will end up in the
BIOS).

>
> Is it possible to disable the SysRq interrupt for this use case?
> ----
> I am not clear your point. My modification uses SysRq. I mean there are
two
> ways to generate SysRq, 1) from keyboard and 2) from serial port. 1) is
> obvious, i.e. hit Ctrl+Alt+SysRq + g. 2) is BREAK and g. When my modified
> gdb is invoked, it sends BREAK and g which break-in to kernel. Did I
answer
> your question? Or are you asking something else?

Right now gdb sends CTRL+C on start-up or when you interrupt the target
during runtime. For kgdb you had to replace this with the SysRq
sequence, right? But as qemu uses the standard way of interruption, this
replacement would have to be disabled again (probably via some "set
whatever-variable") - mmh, unless it is only coupled to serial line
links (QEMU works via TCP). In that case forget my question.

Jan