[发明专利]故障定位的方法和装置有效
申请号: | 200810089912.5 | 申请日: | 2008-04-09 |
公开(公告)号: | CN101261603A | 公开(公告)日: | 2008-09-10 |
发明(设计)人: | 李金虎;朱怀云 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京康信知识产权代理有限责任公司 | 代理人: | 尚志峰;吴孟秋 |
地址: | 518057广东省深圳市南*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 故障 定位 方法 装置 | ||
1.一种故障定位方法,用于对无内部互锁流水级的微处理器的堆栈进行故障定位,其特征在于,所述方法包括:
在由于函数调用异常导致进程出现异常的情况下,在程序空间中获取异常进程的程序指针的值和堆栈指针的值;
根据获取的所述程序指针的值和所述堆栈指针的值获取所述堆栈指针指向的当前函数堆栈的大小以及所述当前函数堆栈的栈帧中所存储的返回指令;
根据所述当前函数堆栈的大小和所述堆栈指针的值获取所述当前函数堆栈之后的函数堆栈的栈帧中存储的函数的返回指令;
查找所述异常进程的可执行文件,并根据查找的所述可执行文件查找所述异常进程的符号表,根据在当前栈帧和其它栈帧中获取的所述返回指令在所述符号表中查找相应的函数。
2.根据权利要求1所述的方法,其特征在于,获取所述当前函数堆栈之后的函数堆栈的栈帧中存储的函数的返回指令的处理具体为:
确定当前堆栈指针的值;
获取所述当前函数堆栈中存储的返回地址;
确定当前函数堆栈的大小;
将确定的所述值和所述大小相加,将相加的结果作为所述当前函数堆栈的下一个函数堆栈的栈帧地址,并将所述下一个函数堆栈作为所述当前函数堆栈。
3.根据权利要求2所述的方法,其特征在于,在每次获取了一个函数堆栈的栈帧中存储的函数的返回指令后,进一步包括:
判断获取的所述返回指令所对应的函数是否在调用异常的函数体内,如果判断为是,则继续查找下个函数堆栈;否则停止查找函数堆栈。
4.根据权利要求3所述的方法,其特征在于,进行所述判断的处理具体为:
获取当前获取的所述函数堆栈的地址,并从所述程序空间获取该函数堆栈的大小,并根据所述当前获取的所述函数堆栈的地址和大小判断其是否在所述函数体范围内。
5.根据权利要求1至4中任一项所述的方法,其特征在于,根据获取的所述返回指令在所述符号表中查找相应的函数的处理具体为:
将所述符号表中小于并且最接近于所述返回地址的函数地址作为对应于该返回地址的函数地址,并根据所述函数地址找到相应函数。
6.一种故障定位装置,用于对无内部互锁流水级的微处理器的堆栈进行故障定位,其特征在于,所述装置包括:
第一获取模块,用于在由于函数调用异常导致进程出现异常的情况下,在程序空间中获取异常进程的程序指针的值和堆栈指针的值;
第二获取模块,用于根据获取的所述程序指针的值和所述堆栈指针的值获取所述堆栈指针指向的当前函数堆栈的大小以及所述当前函数堆栈的栈帧中所存储的返回指令;以及根据所述当前函数堆栈的大小和所述堆栈指针的值获取所述当前函数堆栈之后的函数堆栈的栈帧中存储的函数的返回指令;
查找模块,用于查找所述异常进程的可执行文件,并根据查找的所述可执行文件查找所述异常进程的符号表,根据在当前栈帧和其它栈帧中获取的所述返回指令在所述符号表中查找相应的函数。
7.根据权利要求6所述的装置,其特征在于,所述第二获取模块获取所述当前函数堆栈之后的函数堆栈的栈帧中存储的函数的返回指令的处理具体为:
确定当前堆栈指针的值;
获取所述当前函数堆栈中存储的返回地址;
确定当前函数堆栈的大小;
将确定的所述值和所述大小相加,将相加的结果作为所述当前函数堆栈的下一个函数堆栈的栈帧地址,并将所述下一个函数堆栈作为所述当前函数堆栈。
8.根据权利要求7所述的装置,其特征在于,进一步包括:
判断模块,用于在每次获取了一个函数堆栈的栈帧中存储的函数的返回指令后,判断获取的所述返回指令所对应的函数是否在调用异常的函数体内,如果判断为是,则继续查找下个函数堆栈;否则停止查找函数堆栈。
9.根据权利要求8所述的装置,其特征在于,所述判断模块进行的判断处理具体为:
获取当前获取的所述函数堆栈的地址,并从所述程序空间获取该函数堆栈的大小,并根据所述当前获取的所述函数堆栈的地址和大小判断其是否在所述函数体范围内。
10.根据权利要求6至9中任一项所述的装置,其特征在于,所述查找模块根据获取的所述返回指令在所述符号表中查找相应的函数时所执行的处理具体为:
将所述符号表中小于并且最接近于所述返回地址的函数地址作为对应于该返回地址的函数地址,并根据所述函数地址找到相应函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810089912.5/1.html,转载请声明来源钻瓜专利网。