[发明专利]一种用户态实现X86架构设备异常栈回溯的方法在审
申请号: | 201510479893.7 | 申请日: | 2015-08-07 |
公开(公告)号: | CN105468516A | 公开(公告)日: | 2016-04-06 |
发明(设计)人: | 高福亮 | 申请(专利权)人: | 汉柏科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 300384 天津市南开*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用户 实现 x86 架构 设备 异常 回溯 方法 | ||
1.一种用户态实现X86架构设备异常栈回溯的方法,其特征在于,所述方法包括:
在用户态程序的Makefile中添加编译选项-fnoomit-frame-pointer和-rdynamic;
在用户态增加SIGSEGV信号量处理函数x86_debug,其中所述处理函数x86_debug能够打印程序运行异常时的信息;
将程序运行异常时的打印信息都保存在存储介质中。
2.根据权利要求1所述的方法,其特征在于,所述处理函数x86_debug具体为:
记录程序异常发生的时间;
打印X86设备的硬件寄存器信息;
打印X86异常数据栈的信息;
打印X86异常函数的调用关系。
3.根据权利要求2所述的方法,其特征在于,所述打印X86设备的硬件寄存器信息,具体为:
打印x86sigcontext数据结构的所有变量。
4.根据权利要求2所述的方法,其特征在于,所述打印X86异常数据栈的信息,具体为:
打印esp到esp+512字节空间的数据内容,其中所述esp是X86硬件寄存器的堆栈指针。
5.根据权利要求2所述的方法,其特征在于,所述打印X86异常函数的调用关系,具体为:
根据X86硬件寄存器的ebp和eip,循环利用eip找到异常函数调用关系,并利用backtrace_symbols函数将调用函数地址转换为函数名称后打印,其中所述ebp为基址指针,所述eip为指令指针。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510479893.7/1.html,转载请声明来源钻瓜专利网。