免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1083 | 回复: 0
打印 上一主题 下一主题

qemu调试内核 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-27 18:57 |只看该作者 |倒序浏览

                       qemu(http://fabrice.bellard.free.fr/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调试起来还算蛮爽。不过还没装过一个完整的发行版去试试性能。
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/14459/showart_311039.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP