[发明专利]程序运行错误时定位源代码的方法、装置及计算设备在审
申请号: | 202110701031.X | 申请日: | 2021-04-27 |
公开(公告)号: | CN113342563A | 公开(公告)日: | 2021-09-03 |
发明(设计)人: | 张磊;邢健 | 申请(专利权)人: | 武汉深之度科技有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07 |
代理公司: | 北京瀚方律师事务所 11774 | 代理人: | 周红力 |
地址: | 430206 湖北省武汉市东湖新技术*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 运行 错误 定位 源代码 方法 装置 计算 设备 | ||
1.一种程序运行错误时定位源代码的方法,适于在精简指令集计算设备中执行,所述方法包括:
根据所述程序的程序名以及从程序运行错误时对应的调用栈中获得的出错函数的函数名,获取所述出错函数的地址;
根据所述出错函数的地址以及从程序运行错误时对应的调用栈中获得的出错指令的偏移量,获取所述出错指令的地址,所述出错指令的偏移量为所述出错指令的地址相对于所述出错函数的地址的偏移量;
根据所述出错指令的地址,通过地址定位工具来获取所述出错指令所在函数的混名函数名以及所述出错指令所对应的源代码在其源文件中的行数,所述出错指令所在函数的混名函数名为所述出错指令所在函数的函数名混名后的名称,所述地址定位工具适用于将指令的地址转换成指令所在函数的混名函数名以及指令所对应的源代码在其源文件中的行数;
若所述出错指令所在函数的混名函数名与所述出错函数的混名函数名不同,更新所述出错指令的地址,并重复上述混名函数名和行数的获取步骤,直至获取到的混名函数名与所述出错函数的混名函数名相同,将获取到的行数作为目标文件中出错源代码的行数,所述目标文件为所述程序所对应的源文件。
2.如权利要求1所述的方法,其中,在所述更新所述出错指令的地址的步骤中,通过将所述出错指令的地址减去预设值来更新所述出错指令的地址,所述预设值为一个指令所占的字节数。
3.如权利要求1或2所述的方法,其中,所述根据所述程序的程序名以及出错函数的函数名,获取所述出错函数的地址的步骤,包括:
根据所述程序的程序名以及出错函数的函数名,获取目标混名函数名以及所述目标混名函数名对应的函数的地址,所述目标混名函数名为含有所述函数名的混名函数名;
根据所述目标混名函数名,获取所述目标混名函数名对应的函数的函数签名;
若所述目标混名函数名对应的函数的函数签名与所述出错函数的函数签名相同,将所述目标混名函数名对应的函数的地址作为所述出错函数的地址。
4.如权利要求3所述的方法,其中,所述根据所述程序的程序名以及出错函数的函数名,获取目标混名函数名以及所述目标混名函数名对应的函数的地址的步骤,包括:
根据所述程序的程序名,获取可执行文件中的符号表;
根据所述出错函数的函数名,从所述符号表中获取目标混名函数名以及所述目标混名函数名对应的函数的地址。
5.如权利要求4所述的方法,其中,在所述根据所述程序的程序名,获取可执行文件中的符号表的步骤中,通过解析文件工具来获取可执行文件中的符号表,所述解析文件工具适用于根据输入的程序名来将可执行文件中的符号表打印出来;
在所述根据所述出错函数的函数名,从所述符号表中获取目标混名函数名以及所述目标混名函数名对应的函数的地址步骤中,通过查找字符串工具来从所述符号表中获取目标混名函数名以及所述目标混名函数名对应的函数的地址,所述查找字符串工具适用于根据输入的字符串来将符号表中含有输入的字符串的行打印出来。
6.如权利要求3-5中任意一项所述的方法,其中,在所述根据所述目标混名函数名,获取所述目标混名函数名对应的函数的函数签名的步骤中,通过反混名工具来获取所述目标混名函数名对应的函数的函数签名,所述反混名工具适用于根据函数的混名函数名来输出函数的函数签名。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉深之度科技有限公司,未经武汉深之度科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110701031.X/1.html,转载请声明来源钻瓜专利网。