Chinaunix首页 | 论坛 | 博客
  • 博客访问: 302001
  • 博文数量: 47
  • 博客积分: 1411
  • 博客等级: 上尉
  • 技术积分: 500
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-23 09:10
文章分类

全部博文(47)

文章存档

2009年(3)

2008年(4)

2007年(14)

2006年(26)

我的朋友

分类: LINUX

2007-05-27 18:57:22

       qemu()一个快速处理器仿真器,目前可以仿真x86, arm, PowerPC, SPARC等处理器。在qemu的全系统仿真(full system emulation)环境下行为类似VMware。但是它又能方便的利用自带的gdb stub调试内核。(不过据说vmware的6.0版本已经在linux host上支持gdb,还没try过)
       借着调试mxc_hw_event模块的机会,我试了一把qemu:
       首先,ubuntu下安装qemu很方便,直接去源里取,版本目前是0.8.2的。下载一个原始的内核source,加入自己的模块,再设置CONFIG_DEBUG_INFO,使内核编译时加上debug信息。编译bzImage。下载一个rootfs。直接就将qemu跑起来:
#qemu -s -kernel bzImage -append "noinitrd root=/dev/hda" linux-0.2.img
-s 打开gdb stub功能,在1234端口监听gdb连接。这个时候kernel一路狂奔,都快跳出shell。赶快在另一边:
#gdb vmlinux
(gdb) target remote localhost:1234
连接上qemu,qemu立刻hang住,接下来就随你怎么调了。
        不过调试时会碰到一些issue。首先是timer interrupt经常会在单步调试时跳出来,导致调试不顺畅,google了一下,发现一个patch,打算先看看qemu的代码,然后hack一把,解决这个问题。其次是对module的调试。module因为一般是后期insmod进去的,所以gdb并没办法自动得到debug symbol,我们可以利用以前UML的调试方式:首先获得module的加载地址(通过变量module_list去取得),然后add-symbol-file,将module object加载到该地址,gdb会去读symbol。
       总之qemu调试起来还算蛮爽。不过还没装过一个完整的发行版去试试性能。
阅读(3026) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2009-12-15 21:15:49

你好, 当我在ubuntu8.04命令行执行:qemu linux-0.2.img 时,总是只出现以下一行信息:VNC server running on `127.0.0.1:5900'。请问这怎么解决?谢谢了