prepare kernel code:
Download kernel-<>-src.rpm from http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/
Install the src package, go to /usr/src/redhat/SPECS/,
rpmbuild -bp --target=`uname -m` kernel-2.6.spec 2>prep-err.log |tee
prep-out.log(refer: http://wiki.centos.org/HowTos/I_need_the_Kernel_Source)
cp
rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/configs/kernel-2.6.18-x86_64-xen.config
to rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/.config; make; make
install; make modules_install; As http://docs.fedoraproject.org//release-notes/fc4/errata/
As root: depmod 2.6.18-prep; mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.18-prep.img 2.6.18-prep
gdbserver-xen
compile kernel with debug info and frame pointer enable
compile xen with domu_debug=y in Rules.mk
gdbserver-xen 127.0.0.1:9999 --attach domID to attach to domU
gdb vmlinux
target remote 127.0.01:9999
only can set breakpoint in kernel code, not modues. And always got domU crash when quit gdb.
crash tools
1. Enable domU dump in /etc/xen/xend-config.sxp
2. use crash command to find the core dump line, disassembly partial code by "dis xen_connect"
3. objdump -d -S xensocket.ko > xensocket.s
4. Compare xensocket.s and disassembly output to find error code