[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] Debugging Dom0 kernel over serial
On Wed, Jun 06, 2012 at 10:13:44AM +0100, Ian Campbell wrote:
> On Wed, 2012-06-06 at 00:24 +0100, James Paton wrote:
> > Hi,
> >
> > Apologies if this is not the appropriate list, but I thought I would
> > have better luck here than on xen-users.
> >
> > I'm a CS graduate student hacking on the xen-blkback driver and would
> > like to be able to debug it using gdb over serial. I have spent a great
> > deal of time on this with no success (more details can be found at
> > http://bit.ly/KMEF6o (Stack Overflow)).
> >
> > It eventually occurred to me that it might not even be possible to do
> > what I'm trying to do if Xen intercepts interrupts from the serial port
> > and tries to direct them to dom0 through some unexpected channel. Then,
> > after I've done `echo g > /proc/sysrq_trigger`, the kernel debugger
> > might not see the interrupt. Can anyone confirm or disconfirm this?
>
> It's not something I've ever tried but I expect that if you avoid
> console=com1 (or com*) on your hypervisor command line then the com port
> should be available for dom0 just like on native.
>
> Alternatively you could perhaps separate the two by using com1 for Xen
> and com2/ttyS1 for dom0/kdb etc.
>
> I've no idea if kdb would be expected to work over hvc*. I suspect you'd
> be treading fresh ground with that one...
>
> I'd also start by taking virtual box out of the equation on the host
> side. Start by using a MacOS terminal emulator and checking that you can
> see the dom0 console messages and login via a getty running on ttyS0
> before trying to hook up gdb.
>
> > What is the usual procedure for debugging the Dom0 kernel?
>
> Printk ;-)
:-)))))) any variation of this is the best debugging tool for every piece of
software...
... but another option is plain QEMU. Just download it
(http://wiki.qemu.org/Main_Page),
install minimal set of software relevant for your needs and look for following
options:
- -serial - is a must; I use following combination:
... -serial telnet:127.0.0.1:10232,server ...
you could access it by: telnet 127.0.0.1 10232
- -gdb - remote access for GDB; I use following combination:
... -gdb tcp:127.0.0.1:1234 ...
you could connect from GDB using following command:
target remote :1234
do not forget to compile your software with symbols
- -monitor - useful if you need check something in memory
(especially if you know only physical address - xp command;
but also look for others; I am sure that some could be useful
for you); I use following combination:
... -monitor telnet:127.0.0.1:1233,server,nowait ...
you could access it by: telnet 127.0.0.1 1233
quit from monitor: Ctrl-] and then quit command
- -debugcon - I have not tested it yet but it looks very promising;
usage is very similar to serial option; however, you do not need
to do any hardware initialization (serial ports require it);
just send anything to port 0xe9 (simple outb)
Daniel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel