免费注册 查看新帖 |

Chinaunix

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

为什么gdb调试内核时单步运行不准确? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-31 21:20 |只看该作者 |倒序浏览
Hi,

    我刚刚用qemu+gdb搭建了个调试环境,已经可以在start_kernel处打断点,可问题是,如果单步执行,当前行总是与代码顺序不一致,比如next,会好几次重复在同一行,然后到下一行,然后又回到前面的某一行。
    gdb client端操作是:

    file vmlinux
    target remote localhost:1234
    b start_kernel
    c
    n
    n
    *
    *

    qemu端好像没什么特别的,就是qemu-system-x86_64 -kernel xxx -hda yyy.img -m 512 -smp 2 -S把调试的内核运行起来

    Do I miss something?
    大家调试内核舒服么?

论坛徽章:
0
2 [报告]
发表于 2012-03-31 21:28 |只看该作者
鄙人愚见,任何试图对内核进行尝试都是徒劳,除非你能把整个系统在某个时间段全部冻结,然后让你仔细观察

论坛徽章:
0
3 [报告]
发表于 2012-03-31 21:30 |只看该作者
回复 2# UnixKiller_Ama


    刚进入start_kernel的时候只有一个“线程”,而且只有一个CPU会启动啊。

    不然的话,大侠怎么调试内核?真心求教。。。

论坛徽章:
0
4 [报告]
发表于 2012-03-31 21:58 |只看该作者
回复 4# UnixKiller_Ama

不明白你的意思,你是想说内核不支持gdb调试么?很明显内核是支持调试的啊,kgdb不就为了调试而加入内核的么,还有那么多的编译选项。

只能说我目前还没找到如何使用gdb调试内核的正确方法而已,跟内核变不变态没关系把。

理性的想,如果linux不能支持友好的调试,而是你说的变态,怎么可能发展到今天这么繁荣?




   

论坛徽章:
0
5 [报告]
发表于 2012-03-31 22:05 |只看该作者
rocklinux 发表于 2012-03-31 21:58
回复 4# UnixKiller_Ama

不明白你的意思,你是想说内核不支持gdb调试么?很明显内核是支持调试的啊,kg ...


虽然我认为Linus本人的确是个混球,但是我完全赞同他在2000年关于调试说的那句经典:我就是个混球,你们想咋滴吧?!
kgdb,想调试内核?开国际玩笑,你能让整个系统平台象被人点了葵花点穴手那样静止10分钟让你仔细观察吗?kgdb调试时,很有可能引入kgdb本身导致的问题,而无助于真正问题的解决。当然你自己去玩一下是可以的

论坛徽章:
0
6 [报告]
发表于 2012-03-31 22:12 |只看该作者
貌似调试内核时,用的最多的是打log

论坛徽章:
0
7 [报告]
发表于 2012-03-31 22:24 |只看该作者
回复 7# GFree_Wind


恩,我也知道,只是我觉得每次加printk后重新编译很麻烦,时间不短,而且kernel重启也不快,所以觉得单步调试是不是方便点。。。

论坛徽章:
0
8 [报告]
发表于 2012-03-31 22:32 |只看该作者
回复 6# UnixKiller_Ama


    kgdb只是调试的手段之一,没人说它是万能的,但至少有用,不然也不会merge到mainline,不是么
    而且我说了,我只是想知道为什么单步调试时,next命令执行不准确,这跟block住内核有关系么?
    稍有经验的人都知道对于多线程程序或是牵连硬件信号的等对时间敏感的程序,block then single step都不是好方法。而我只是在start_kernel初期,只有一个线程,一个CPU可以运行。

论坛徽章:
0
9 [报告]
发表于 2012-04-01 01:27 |只看该作者
感觉和o2编译有关系  

论坛徽章:
0
10 [报告]
发表于 2012-04-01 14:22 |只看该作者
回复 10# ww2000e

有可能

但既然选择了加入debug info,应该不会o2优化吧,回去看看

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP