免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: liujunwei1234

linux内核调试的郁闷历程!!! [复制链接]

论坛徽章:
0
发表于 2009-05-17 20:36 |显示全部楼层
原帖由 thomas_ar 于 2009-5-17 14:40 发表
参考这两篇文章:
http://blog.linux.org.tw/~jserv/archives/001954.html
http://blog.linux.org.tw/~jserv/archives/002045.html

我就是按照上面做的,可以成功地进行调试


jserv是台湾的linux狂人 。。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2009-05-17 23:40 |显示全部楼层

回复 #3 superfight 的帖子

很感谢你的回答,确实解决了我的问题,但是好像不是我想要的结果。我现在对linux内核的调试过程好像还是没有了解清楚。
我的问题是这样的,我下载了你给的那个busybox-initramfs,这应该是启动过程中加载的第一个最小的文件系统,即我的理解是linux启动后,把一个最小的文件系统直接拷到内存,然后这个最小的文件系统再来加载我们实际系统的更大的文件系统。那么现在存在的问题就是,我现在要调试内核源码,那肯定是要跑起实际的操作系统了,而不是只有一个最小的文件系统。就是,加载完这个最小的文件系统之后的代码我是无法调试的。不知道我理解的对不对?
    但是,我们应该确定肯定是能调试的,那么正确的方法应该是怎么样的呢?

[ 本帖最后由 liujunwei1234 于 2009-5-17 23:42 编辑 ]

论坛徽章:
0
发表于 2009-05-18 01:20 |显示全部楼层
= = 你又不说明白~ 我还以为你的问题就是不能挂载根文件系统~

调试的话是这样~

开两个终端~ 一个运行QEMU 在最后加上- S  执行之后是不会启动的 然后按ctrl+alt+2 进入控制台 然后输入gdbserver 1234  再按ctrl+alt+1退出控制台

然后在编译完成的内核根目录下应该有一个文件,叫vmlinux 然后在另一个终端进入到内核的根目录下,输入gdb vmlinux 然后输入b start_kernel
然后输入target remote localhost:1234 然后按c  这个时候QEMU就会运行到start_kernel处停下

这个时候就能进行DEBUG了~


RAMDISK也是一个根文件系统~ 我觉得不分什么实际不实际的~ 我一直是用RAMDISK进行内核的DEBUG的~ 有dmsg命令就足够了~

[ 本帖最后由 superfight 于 2009-5-18 01:24 编辑 ]

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2009-05-18 08:38 |显示全部楼层

回复 #13 superfight 的帖子

能给我留下个联系方式吗?我想我还是没说明白,能当面向你请教吗?
start_kernel我也能调试的,我现在有几个问题就是:
(1)我调试到rest_init()  --》kernel_init  -->init_post(),开始的时候会出现, VFS : unable to mount rootfs with unknown block(0,0)
(2)现在用你给我的busybox-initramfs,同样也只能调试到init_post,然后就出现了断错误,我分析原因是此时操作系统只有一个最小的文件系统,并没有挂载实际的文件系统,也就是到这里操作系统已经执行完了,所以就调试不下去了。

我现在要达到的目的是要调试调度算法那一块,而现在操作系统却只能跑到init_post就出错了。
真是太感谢你了,一次次回答我的问题。主要是我太菜了。呵呵!

论坛徽章:
0
发表于 2009-05-18 11:01 |显示全部楼层
一步一步解决吧~

你现在能进入到控制台中么~ 也就是能不能输入ls等命令?~

论坛徽章:
2
申猴
日期:2013-12-26 22:11:31天秤座
日期:2014-12-23 10:23:19
发表于 2009-05-18 11:40 |显示全部楼层

回复 #14 liujunwei1234 的帖子

你的这个问题是编译出来的内核有问题,不是qemu的问题

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2009-05-18 12:17 |显示全部楼层

回复 #15 superfight 的帖子

能进控制台,可以执行ls命令。

论坛徽章:
0
发表于 2009-05-18 15:32 |显示全部楼层
能用ls就没啥问题了啊 = =

在gdb里面设置断点就行了~

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2009-05-19 00:26 |显示全部楼层
正式结贴啊!已经搞定,浪费了一周的时间罪魁祸首是.config文件没有配好啊,竟然漏了一些驱动!现在终于可以调试内核了!哎!

论坛徽章:
0
发表于 2009-05-20 07:48 |显示全部楼层
很久没有发帖子了,看到这么多人讨论Linux好与不好,忍不住想说几句,说话实话,从多使用Linux的经验来看,Linux不适合作为桌面应用,至少现在不适合,虽然基于Linux的软件不比windows少,但真正使用起来,问题多多,但在服务器系统上,Linux系统绝对适合,而且增长率非常的快,目前国内的企业中,我们熟悉的腾讯、中兴、华为等等都在使用Linux,用的就是SUSE(opensuse是suse开源社区)。从楼主的使用经历来看,虽然用了2年的linux,但水平属于菜鸟级的,仅仅的简单的使用,而没有深入其中,你说linux垃圾,觉得windows好,如果有机会你做一些关于windows服务器部署方面的工作,你就知道开源的好处了,那时你就明白为什么很多人骂微软垄断了。linux从诞生到今天,发展已经非常快了,你可以多留意一些身边的电子设备,说不定核心就是linux。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP