[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
... but another option is plain QEMU. Just download it
install minimal set of software relevant for your needs and look for following
- -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)
Xen-devel mailing list