Hi Folks, After looking around for a howto and asking ppl on IRC, I had to come back to the forum for this - how to debug xen? Basically, I would love to be able to step through the code using gdb connected serially to another machine. Is there some functionality like that in Xen. I also found some emails referencing a XenDebugger-HowTo, however I couldn''t find that file anywhere. I will highly appreciate if someone can point me to a set of documents that describes the process. Thanks, Himanshu -- ------------------------------------------------------------------------- Himanshu Raj PhD Student, GaTech (www.cc.gatech.edu/~rhim) I prefer to receive attachments in an open, non-proprietary format. ------------------------------------------------------------------------- _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
> After looking around for a howto and asking ppl on IRC, I had to come back > to the forum for this - how to debug xen? > > Basically, I would love to be able to step through the code using gdb connected > serially to another machine. > > Is there some functionality like that in Xen. I also found some emails referencing > a XenDebugger-HowTo, however I couldn''t find that file anywhere.Run the build script in xen-unstable.hg/tools/debugger/gdb. Install the gdbserver and gdb (I put them in /usr/local/bin as gdbserver-xen and xengdb). Build your kernel with debug. I use the flags "verbose=y domu_debug=y debug=y". although I dont know if these are all required. Start up your domain (I use vm-tools and do all the steps except the vm-pause step). Run gdbserver. I run "gdbserver-xen 127.0.0.1:9999 --attach $dom" Run gdb. I run "xengdb -x remgdb" where remgdb has the command "target remote 127.0.0.1:9999" in it. Tada, you''re in a debugger. I use the following script to automate this tedious process: --- deb.sh --- #!/bin/sh run() { echo "$*" $* || (echo ''failed''; exit 1) } # vm-create isnt giving us the right answer... dom=`vm-create` echo dom is $dom run vm-memory -m $dom 64m run vm-memory -i $dom 64m run vm-build.linux $dom /root/kernel echo done $dom gdbserver-xen 127.0.0.1:9999 --attach $dom & sleep 1 xengdb -x /root/remgdb run vm-pause -u $dom --- end deb.sh ---> Himanshu Raj > PhD Student, GaTech (www.cc.gatech.edu/~rhim)Hope this helps, Tim Newsham http://www.lava.net/~newsham/ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Hi Tim, Thanks for the reply. I will try this out asap. However, just looking at it, this looks like a solution to debug guests running under xen. I am more interested in debugging xen itself. Can you shed any light on that? Thanks, Himanshu On Tue, Aug 23, 2005 at 09:30:54PM -1000, Tim Newsham wrote:> >After looking around for a howto and asking ppl on IRC, I had to come back > >to the forum for this - how to debug xen? > > > >Basically, I would love to be able to step through the code using gdb > >connected > >serially to another machine. > > > >Is there some functionality like that in Xen. I also found some emails > >referencing > >a XenDebugger-HowTo, however I couldn''t find that file anywhere. > > Run the build script in xen-unstable.hg/tools/debugger/gdb. > Install the gdbserver and gdb (I put them in /usr/local/bin > as gdbserver-xen and xengdb). > Build your kernel with debug. I use the flags > "verbose=y domu_debug=y debug=y". although I dont know if these > are all required. > Start up your domain (I use vm-tools and do all the steps except > the vm-pause step). > Run gdbserver. I run "gdbserver-xen 127.0.0.1:9999 --attach $dom" > Run gdb. I run "xengdb -x remgdb" where remgdb has the command > "target remote 127.0.0.1:9999" in it. > > Tada, you''re in a debugger. > > I use the following script to automate this tedious process: > > --- deb.sh --- > #!/bin/sh > > run() > { > echo "$*" > $* || (echo ''failed''; exit 1) > } > > # vm-create isnt giving us the right answer... > dom=`vm-create` > echo dom is $dom > > run vm-memory -m $dom 64m > run vm-memory -i $dom 64m > run vm-build.linux $dom /root/kernel > > echo done $dom > gdbserver-xen 127.0.0.1:9999 --attach $dom & > sleep 1 > xengdb -x /root/remgdb > > run vm-pause -u $dom > --- end deb.sh --- > > >Himanshu Raj > >PhD Student, GaTech (www.cc.gatech.edu/~rhim) > > Hope this helps, > Tim Newsham > http://www.lava.net/~newsham/-- ------------------------------------------------------------------------- Himanshu Raj PhD Student, GaTech (www.cc.gatech.edu/~rhim) I prefer to receive attachments in an open, non-proprietary format. ------------------------------------------------------------------------- _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
I''ve been trying this approach, trying xend tools and vm-tools. I actually make the most progress using xend tools. I''m able to create a domain (paused), set up the gdbserver, connect gdb and set a breakpoint. I can then unpause the domain and it runs until it hits the breakpoint I set (which is in netfront.c). However, when that breakpoint is hit, the domU kernel oopses, rather than re-directing the exception to the gdbserver. Did I miss something? (And with vm-tools when I unpause the domain I get one line of console output and that''s all.) -- Michal Ostrowski On Tue, 23 Aug 2005 21:30:54 -1000 (HST) Tim Newsham <newsham@lava.net> wrote:> > After looking around for a howto and asking ppl on IRC, I had to come back > > to the forum for this - how to debug xen? > > > > Basically, I would love to be able to step through the code using gdb connected > > serially to another machine. > > > > Is there some functionality like that in Xen. I also found some emails referencing > > a XenDebugger-HowTo, however I couldn''t find that file anywhere. > > Run the build script in xen-unstable.hg/tools/debugger/gdb. > Install the gdbserver and gdb (I put them in /usr/local/bin > as gdbserver-xen and xengdb). > Build your kernel with debug. I use the flags > "verbose=y domu_debug=y debug=y". although I dont know if these > are all required. > Start up your domain (I use vm-tools and do all the steps except > the vm-pause step). > Run gdbserver. I run "gdbserver-xen 127.0.0.1:9999 --attach $dom" > Run gdb. I run "xengdb -x remgdb" where remgdb has the command > "target remote 127.0.0.1:9999" in it. > > Tada, you''re in a debugger. > > I use the following script to automate this tedious process: > > --- deb.sh --- > #!/bin/sh > > run() > { > echo "$*" > $* || (echo ''failed''; exit 1) > } > > # vm-create isnt giving us the right answer... > dom=`vm-create` > echo dom is $dom > > run vm-memory -m $dom 64m > run vm-memory -i $dom 64m > run vm-build.linux $dom /root/kernel > > echo done $dom > gdbserver-xen 127.0.0.1:9999 --attach $dom & > sleep 1 > xengdb -x /root/remgdb > > run vm-pause -u $dom > --- end deb.sh --- > > > Himanshu Raj > > PhD Student, GaTech (www.cc.gatech.edu/~rhim) > > Hope this helps, > Tim Newsham > http://www.lava.net/~newsham/ > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
You need to have domu_debug enabled in Rules.mk -Kip On 8/29/05, Michal Ostrowski <mostrows@watson.ibm.com> wrote:> I''ve been trying this approach, trying xend tools and vm-tools. > I actually make the most progress using xend tools. > > I''m able to create a domain (paused), set up the gdbserver, connect gdb > and set a breakpoint. I can then unpause the domain and it runs until > it hits the breakpoint I set (which is in netfront.c). > > However, when that breakpoint is hit, the domU kernel oopses, rather > than re-directing the exception to the gdbserver. > > Did I miss something? > > (And with vm-tools when I unpause the domain I get one line of console > output and that''s all.) > > -- > Michal Ostrowski > > On Tue, 23 Aug 2005 21:30:54 -1000 (HST) Tim > Newsham <newsham@lava.net> wrote: > > > > After looking around for a howto and asking ppl on IRC, I had to come back > > > to the forum for this - how to debug xen? > > > > > > Basically, I would love to be able to step through the code using gdb connected > > > serially to another machine. > > > > > > Is there some functionality like that in Xen. I also found some emails referencing > > > a XenDebugger-HowTo, however I couldn''t find that file anywhere. > > > > Run the build script in xen-unstable.hg/tools/debugger/gdb. > > Install the gdbserver and gdb (I put them in /usr/local/bin > > as gdbserver-xen and xengdb). > > Build your kernel with debug. I use the flags > > "verbose=y domu_debug=y debug=y". although I dont know if these > > are all required. > > Start up your domain (I use vm-tools and do all the steps except > > the vm-pause step). > > Run gdbserver. I run "gdbserver-xen 127.0.0.1:9999 --attach $dom" > > Run gdb. I run "xengdb -x remgdb" where remgdb has the command > > "target remote 127.0.0.1:9999" in it. > > > > Tada, you''re in a debugger. > > > > I use the following script to automate this tedious process: > > > > --- deb.sh --- > > #!/bin/sh > > > > run() > > { > > echo "$*" > > $* || (echo ''failed''; exit 1) > > } > > > > # vm-create isnt giving us the right answer... > > dom=`vm-create` > > echo dom is $dom > > > > run vm-memory -m $dom 64m > > run vm-memory -i $dom 64m > > run vm-build.linux $dom /root/kernel > > > > echo done $dom > > gdbserver-xen 127.0.0.1:9999 --attach $dom & > > sleep 1 > > xengdb -x /root/remgdb > > > > run vm-pause -u $dom > > --- end deb.sh --- > > > > > Himanshu Raj > > > PhD Student, GaTech (www.cc.gatech.edu/~rhim) > > > > Hope this helps, > > Tim Newsham > > http://www.lava.net/~newsham/ > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xensource.com > > http://lists.xensource.com/xen-devel > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel > > > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel