[发明专利]一种linux系统下用户态进程异常的分析方法有效
申请号: | 201610131609.1 | 申请日: | 2016-03-09 |
公开(公告)号: | CN105824749B | 公开(公告)日: | 2019-06-25 |
发明(设计)人: | 王仁雷;苟利平 | 申请(专利权)人: | 上海博达数据通信有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海天翔知识产权代理有限公司 31224 | 代理人: | 刘常宝 |
地址: | 201203 上海市浦东新区*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种linux系统下用户态进程异常的分析方法,本方法通过进程自身接管特定的信号获取异常时的任务上下文并按体系结构解析任务堆栈实现了对异常的分析。本方案能够协助软件开发人员快速准确定位并解决软件BUG。 | ||
搜索关键词: | 一种 linux 系统 用户 进程 异常 分析 方法 | ||
【主权项】:
1.一种linux系统下用户态进程异常的分析方法,其特征在于,所述分析方法通过进程自身来进行异常分析,包括如下步骤:(1).进程启动后接管要进行异常分析的信号:SIGILL、SIGBUS、SIGFPE、SIGSEGV、SIGIO信号,并重新设置信号处理程序;(2).当上述信号发生时,系统会自动调用之前设置的信号处理程序,即跳到步骤(3);(3).获取异常类型、异常线程的名称,按CPU的体系结构获取异常时CPU寄存器上下文:(4).以sc_regs[29]为栈顶获取任务堆栈信息;(5).sc_pc为异常指令,查找符号表可获取异常函数,再根据MIPS寄存器上下文、任务堆栈信息分析得到异常函数的调用关系,具体过程如下:(51).从寄存器上下文的sc_pc获取pc;(52.)从寄存器上下文的sc_regs[29]获取本级栈帧;(53).判断获取的pc是否合法:若合法,转入步骤(54),若不合法,结束本次分析;(54).按pc查找符号表,再把pc指向对应的函数入口;(55.)分析pc处的指令是否为分配本级栈帧指令:若为叶子函数,转入步骤(56);若非叶子函数,则转入步骤(58);(56).确定上级栈帧即为本级栈帧;(57).从寄存器上下文的sc_regs[31]获取ra,并执行步骤(61);(58).计算获取上级栈帧pc指向下条指令;(59).分析pc处的指令是否为ra入栈指令:若不是且分支不可达,则结束本次分析;若是,则转入步骤(60);(60).获取ra;(61).pc指向ra继续分析上级栈帧,并转入步骤(53);(6).通过printf()函数输出解析后的异常信息;(7).在非易失性随机访问存储器中记录解析后的异常信息,用于以后查看异常信息。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海博达数据通信有限公司,未经上海博达数据通信有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610131609.1/,转载请声明来源钻瓜专利网。
- 上一篇:新风入户装置的组合式过滤网固定框
- 下一篇:节能型调功器