【转载】在Debian下从源代码构造可以进行调试的UML

发信人: judicious (无法无天的), 信区: KernelTech
标  题: 在Debian下从源代码构造可以进行调试的UML
发信站: BBS 水木清华站 (Sat Feb 26 15:01:05 2005), 转信

由于从.deb构造的user-mode-linux不能作为可以调试的内核(没有导出内核符号),所以我需要从源代码打造可以调试的user-mode -linux.我使用的内核是2.4.24,使用的UML的patch是2.4.24-3.使用2.4.18内核时,编译有问题的。(2005-01- 16补充了使用gdb调试内核的方法)

1从源代码编译user-mode-linux,基本上根据UML的HOWTO就可以了(http://user-mode-linux.sourceforge.net/UserModeLinux-HOWTO.html)

shell下:

a下载内核源代码到path,我用的是2.4.24(我用2.4.18编译了N便过不去)

apt-get install kernel-source-2.4.24

b解压kernel source: 

debian:path#tar -xvjf kernel-source-2.4.24.tar.bz2

b下载UML的patch到kernel-source,我用的是2.4.24-3(我用2.4.24-3编译了一次没过去)

http://prdownloads.sourceforge.net/user-mode-linux/uml-patch-2.4.24-3.bz2

d  debian:path/kernel-source-2.4.24#bzcat uml-patch-2.4.24-3.bz2

e make menconfig ARCH=um

不用作任何修改,或者可以根据你自己的需要定制内核

f make linux ARCH=um(不用make dep)

内核编译完成,在源码树的顶端生成linux,这个就是UML,是一个应用程序

2 下载根文件系统(root file system)到/mnt
http://puzzle.dl.sourceforge.net/sourceforge/user-mode-linux/Debian-3.0r0.ext2.bz2
3 shell下:
   #:cd /mnt
4 #:bunzip2 Debian-3.0r0.ext2.bz2
5 #:dd if=/dev/zero of=Debian-3.0r0.ext2 bs=1 count=0 seek=536870912
6 #:/sbin/e2fsck -f  Debian-3.0r0.ext2
7 #:/sbin/resize2fs -p Debian-3.0r0.ext2
8 linux ubd0=Debian-3.0r0.ext2 devfs=mount

系统应该可以起来了

9 关于调试

提供三种方法:

调试方法一(这是fiasco@smth大虾提供的方法,我试过但是没有成功):

a 启动gdb linux,得到这个进程的PID

b linux ubd0=Debian-3.0r0.ext2 devfs=mount debug gdb-pid=PID

然后再gdb那个进程就可以像调试普通程序那样调试内核了

调试方法二:

a gdb linux

b gdb>set args  ubd0=Debian-3.0r0.ext2 devfs=mount  //设置程序运行的参数

现在就可以向调试一个普通的应用程序那样调试内核了(呵呵,这个linux本身就是个普通程序:-))

调试方法三

a linux ubd0=Debian-3.0r0.ext2 devfs=mount debug gdb-pid=PID

b 使用ps -a获得上一步linux运行的pid

shell下:

gdb

att pid

ok,现在也可以像调试普通程序一样调试了,但是这个方法没有方法二好,因为你执行att pid的时候,你无法控制程序运行的位置

good luck

by judicious

附两个有用链接:

http://deb.riseup.net/miscellaneous/uml/

http://now.ohah.net/en/User_Mode_Linux

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.70.*]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值