VMWare Workstation 6.0调试Linux Kernel
来源:互联网 发布:linux 启动ftp服务 编辑:程序博客网 时间:2024/06/08 19:47
转载出处:http://www.sudu.cn/info/html/edu/20070102/287645.html
刚刚在LKML上看到的。可以做到C源代码级别的内核单步调试,真是简单的无以复加了。 如果不存在LICENSE方面的考虑, 我觉得UML(User Mode Linux)已经可以抛弃了。
一、环境:1, 一台Linux机器, 用于运行gdb和VMWare Workstation 6.0, 我们称之为HOST机器。
2, VMWare6.0中安装一个Linux系统, 我们称这个Linux系统为GUEST机器, 它运行被调试的内核。
二、设置:
很简单,在你的HOST Linux中,往GUEST Linux的vmware配置文件(即后缀名为.vmx的文件)追加一个字符串。 在我的机器上是这样的:
# echo "debugStub.listen.guest32=1" >> /root/vmware/FC4\ Linux/FC4\ Linux.vmx
三、调试:
1, 把GUEST Linux上的内核映像文件(vmlinux)和内核源代码拷贝到HOST机器上。
为了能够用gdb的list命令显示源代码, 看看GUEST机器上的/lib/modules//source (以下简称source) 和/lib/modules//build (以下简称build)这两个符号链接各自指向哪里(注:如果编译内核时没有用O=选项指定输出的路径,那么这两个符号链接就指向同一个路径,通常是/usr/src/linux-2.x.xx)。 拷贝到HOST机器上相应的路径上。
提醒: 编译内核之后build目录下会有很多临时文件, 有上G之大, 可以先把build目录下的vmlinux拷贝到HOST机器上, 然后进入source目录, 运行:
make O=/lib/module//build clean
然后再把build和source拷贝到HOST机器上。
2, 启动安装在VMWare中的GUEST Linux。
3, 在HOST机器上运行gdb, 进行调试:
(gdb) file vmlinux (vmlinux就是从GUEST拷贝过来的内核映像文件)
Reading symbols from /root/vmlinux...done.
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) target remote localhost:8832
Remote debugging using localhost:8832
[New thread 1]
0x000f42ArrayArray in ?? ()
warning: shared library handler failed to enable breakpoint
作为例子,下面是几个调试动作:
3.1 设置断点:
(gdb) b do_IRQ
3.2 Continue和Step单步调试:
可以看出, gdb用运行以下step命令, GUEST Linux就往下执行一句;否则就停着。
3.3 清除断点,Continue
没有断点了, continue命令之后GUEST Linux就会正常的跑下去了。
3.4 gdb的quit命令
可见, 在gdb中quit了被调试程序, GUEST Linux就关机了。
VMWare Workstation 6.0真是个好东西, 推荐! :)
- 使用VMWare Workstation 6.0调试Linux Kernel
- VMWare Workstation 6.0调试Linux Kernel
- VMWare Workstation 6.0调试Linux Kernel
- VMWare Workstation 8.0.2 and Linux Kernel 3.* Patch
- VMWare Workstation 8.0.3 fix vmnet module(linux kernel 3.*)
- Linux 安装 vmware workstation
- VMware Workstation安装Linux
- VMware Workstation安装linux
- Linux安装vmware workstation
- Fedora VMware Workstation Kernel headers install
- vmware workstation 5.5.3在linux 2.6.21.1 kernel下安装错误
- vmware workstation 8.0.3 + linux kernel 3.2.X(ubuntu 12.04LTS)
- kali linux 更新后Kernel 4.6VMWare Workstation无法启动的解决办法
- 用VMware Workstation安装linux
- VMware Workstation 7 for linux
- linux下安装vmware-workstation
- vmware workstation 扩容(linux)
- Linux下安装VMware Workstation
- 2075. 2.2 Computing the volume of a cylinder
- UVAOJ--10718 Bit Mask
- jacob java.lang.NoSuchMethodError: com.jacob.com.Dispatch.call(Lcom/jacob/com/Dispatch;Ljava/lang/St
- Java中获取键盘输入值的三种方法
- Nmap高级用法与典型场景
- VMWare Workstation 6.0调试Linux Kernel
- 孙鑫MFC学习心得:Lesson10:图形的绘制
- iOS sql用法
- Uva-101-The Blocks Problem
- 紧邻算法分类器之模拟图(二)
- Qt4连接mysql成功
- Asp.Net MVC 在后台获取PartialView、View文件生成的字符串
- 使用Javascript和PHP对服务端XML文档进行操作
- linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]