免费注册 查看新帖 |

Chinaunix

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

【难】linux调用栈回溯 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-16 10:56 |只看该作者 |倒序浏览
我们都知道linux2.6提供了很好的内核调用栈回溯功能,这样当oops时能够提供有效的信息供内核开发者分析定位!
但是,有没有一种好的方法能够在用户空间实现类似的功能!这样在开发的过程中就可以完整的打印出从用户应用程
序到内核程序的整个过程。

但是,想法虽好,做起来就头疼了。在成功获取到用户空间的sp信息之后,就卡格了。内核空间我们可以很轻松的
获得函数符号表,甚至通过反汇编vmlinux可以精确到具体的指令,但是用户空间就不行了。

上google搜了半天没有什么进展,前来ChinaUnix求救。有没有哪位前辈指点一下!

论坛徽章:
0
2 [报告]
发表于 2011-03-16 14:23 |只看该作者
回复 1# jyhhappyjyh


    高手在哪里啊?

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
3 [报告]
发表于 2011-03-16 14:35 |只看该作者
strace??

论坛徽章:
0
4 [报告]
发表于 2011-03-16 14:40 |只看该作者
回复 3# amarant


    可否说得具体一点!这一方面是初次尝试着做!

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
5 [报告]
发表于 2011-03-16 15:01 |只看该作者
我也不知道你是不是要这个功能,你用strace ls看看结果,再看看man strace,看能不能满足你的需求

论坛徽章:
0
6 [报告]
发表于 2011-03-16 15:28 |只看该作者
回复 5# amarant


    貌似不行!我是想打出导致内核崩溃的进程用户空间的调用栈!说得不是很清楚啊,这样说吧:
一个进程起来之后,它当中的函数A()会触发一个系统调用B(),而B()中有一个bug导致kernel panic
这个时候我要打印出是A()-->...-->B()这样的一个过程。现在我已经从在触发系统调用的调度函数handle_sys()
中获取到了用户空间的sp,但是有这个sp如何去获知是函数A()??

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
7 [报告]
发表于 2011-03-16 15:34 |只看该作者
strace就是显示用户进程的系统调用情况阿,是kernel panic是因为系统调用产生,去找这个进程干什么呀。

论坛徽章:
0
8 [报告]
发表于 2011-03-16 16:35 |只看该作者
回复 7# amarant


就是想知道具体是哪个进程进行系统调用导致的panic。现在进程可以知道,就是进程用户侧的函数调用关系没法确定!

论坛徽章:
0
9 [报告]
发表于 2011-03-16 17:30 |只看该作者
LZ想做的也是我以前想做的,搞出来了说一下哦

论坛徽章:
0
10 [报告]
发表于 2011-03-16 17:39 |只看该作者
回复 9# UniqueAccount


   一定O(∩_∩)O哈!你有没有什么好的思路?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP