打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux GDB+UML(User
前言
用户模式的Linux(UML:User-ModeLinux)是指将Linux作为一个独立的、可移植的Linux内核而创建,其实现包含在子目录arch/um中。然而,它并不是运行在某种新的硬件之上,而是运行在基于Linux系统调用接口所实现的虚拟机之上。因此用户模式的Linux可以使得Linux内核成为一个运行在Linux系统之上的、独立的用户模式进程。
将一个内核的副本当做用户模式下的进程来运行有多个优势。首先其运行在一个受约束的虚拟处理器上,所以有错误的内核不会破坏“真正”的系统;其次对软/硬件的不同配置可以在相同的框架下进行不同的尝试;更重要的是对Linux内核开发人员来说,可以轻易利用gdb对用户模式Linux进行调试,因为归根到底它始终是一个进程。因此利用UML一方面可以加快Linux内核的开发过程;另一方面也有助于我们对Linux内核运行机制的了解。本文研究如何搭建gdb+uml的调试环境。
备注:我使用的系统是Debian-6.07。

第一部分 UML系统搭建
第一步:下载Linux内核
下载linux-2.6.38.tar.bz2:

第二步:解压内核,生成基于um的配置文件
$cd /home/tom
$tar xvflinux-2.6.38.tar.bz2
$cd linux-2.6.38
$make ARCH=um defconfig
示意图如下:

第三步:修改配置文件
$make menuconfig ARCH=um
1.配置General Setup->Initial RAM filesystem andRAM disk(initramfs/initrd)support
示意图如下:

2.选择Kernel hacking->Kernel debugging
示意图如下:

3.选择Kernel hacking->Compile the kernel with debuginfo
示意图如下:
第四步:编译内核
$make ARCH=um2>&1 | tee build.log
示意图如下:
第五步:下载linux根文件系统Debian-Squeeze-x86-root_fs.bz2
下载地址:
http://fs.devloop.org.uk/
备注:当然了,我们也可以自己制作根文件系统,O(∩_∩)O~。
将Debian-Squeeze-x86-root_fs.bz2下载到/home/tom/Public/目录下,运行命令:
$bunzip2Debian-Squeeze-x86-root_fs.bz2
解压生成Debian-Squeeze-x86-root_fs根文件系统。

第六步:切换到root用户,运行User-mode Linux
$cd ~/Public/linux-2.6.38
$sudo bash   //将bash运行在root权限下
#./linuxudb0=../Debian-Squeeze-x86-root_fs mem=32m
执行结果如下:

第三部分 gdb+uml调试
保持第二部分User-mode Linux处于正在运行,开启另外一个终端,在该终端中首先查询User-modeLinux进程的进程号。
$ps –el |grep linux

备注:其中的uml根进程号为17425,但是gdb绑定的是其子进程17427.

启动gdb,连接User-Mode Linux进程,设置断点,并进行调试。
$cd ~/Public/linux-2.6.38
$sudo bash
#gdb linux
示意图如下:

在gdb的调试环境下连接到User-Mode Linux进程,设置断点,即可进行调试。
使用命令:
$attach 17427
$break sys_clone
$info break
$continue
示意图如下:

此时我们在User-Mode Linux环境中打入ls –l/命令,系统将会在sys_clone()函数处停下来,示意图如下:

现在就可以在gdb中查看sys_clone()函数运行的状态。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Linux UML 内核调试方法
Linux 系统内核的调试
Linux内核调试方法
在vmware上建立kgdb调试linux kernel源码的平台-1
精华区文章阅读
虚拟机Linux Redhat 9与目标开发板进行系统编程方面的问题总结1
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服