[发明专利]程序运行错误时定位源代码的方法、装置及计算设备有效
申请号: | 202110456935.0 | 申请日: | 2021-04-27 |
公开(公告)号: | CN112860473B | 公开(公告)日: | 2021-07-30 |
发明(设计)人: | 张磊;邢健 | 申请(专利权)人: | 武汉深之度科技有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07 |
代理公司: | 北京瀚方律师事务所 11774 | 代理人: | 周红力 |
地址: | 430206 湖北省武汉市东湖新技术*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 运行 错误 定位 源代码 方法 装置 计算 设备 | ||
本发明公开了一种程序运行错误时定位源代码的方法,在精简指令集计算设备中执行,该方法包括:根据程序的程序名以及从程序运行错误时对应的调用栈中获得的错误提示信息,获取出错指令的地址;根据出错指令的地址,获取出错指令所在函数的混名函数名以及出错指令所对应的源代码在其源文件中的行数;若出错指令所在函数的混名函数名与出错函数的混名函数名不同,更新出错指令的地址,并重复上述混名函数名和行数的获取步骤,直至获取到的混名函数名与出错函数的混名函数名相同,将获取到的行数作为目标文件中出错源代码的行数。本发明一并公开了相应的装置、计算设备及可读存储介质。本发明定位源代码的方法能够快速准确定位出源代码中出错的位置。
技术领域
本发明涉及计算机领域,尤其涉及一种程序运行错误时定位源代码的方法、装置、计算设备及可读存储介质。
背景技术
计算机程序是由编译器等软件将开发人员编写的源代码编译成包含二进制指令的可执行程序得到的。开发人员在编写源代码时大多会使用C、C++等语言。当在编写C或C++程序时,开发者一般会调用开发库(例如由C或者C++语言开发的glibc、stdc++等)中的一些函数来实现某些功能,如字符串处理、文件处理等,有时还会使用到第三方库中的宏。其中,使用宏形成的调用栈与调用函数形成的调用栈有所不同。
例如,当源代码文件a.cpp中的函数f1调用开发库中x.cpp文件中的函数f2后,程序的当前调用栈为f2函数,对应的源码文件为x.cpp,调用者为f1函数。但是当源代码文件a.cpp中的函数f1使用开发库中y.cpp文件中的宏m1后,程序的当前调用栈仍在函数f1中,只不过对应的源代码文件还为开发库中的y.cpp。
这样,如果程序在运行宏代码m1的时候崩溃,虽然调用栈显示出错的是函数f1,但根据调用栈中的指令地址定位到的却是开发库中的源代码文件y.cpp。也就是说,如果程序在运行宏代码m1的时候出现错误,基于调用栈中的指令地址已无法定位到函数f1中的出错的源代码。
在这种情况下,基于目前的现有技术只能尝试在源代码程序中加入断点,通过单步执行的方式来重现问题,进而找出源代码文件中出错的源代码。显然这种方法耗时费力、成本高。并且,对于那些概率性的程序错误,由于其难以重现,因此根本无法找出本程序源代码文件中的出错位置。
发明内容
为此,本发明提供了一种程序运行错误时定位源代码的方法、装置、计算设备及可读存储介质,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种程序运行错误时定位源代码的方法,适于在精简指令集计算设备中执行,该方法包括:根据程序的程序名以及从程序运行错误时对应的调用栈中获得的错误提示信息,获取出错指令的地址,错误提示信息包括出错函数的函数名和出错指令的偏移量,出错指令的偏移量为出错指令的地址相对于出错函数的地址的偏移量;根据出错指令的地址,获取出错指令所在函数的混名函数名以及出错指令所对应的源代码在其源文件中的行数,出错指令所在函数的混名函数名为出错指令所在函数的函数名混名后的名称;若出错指令所在函数的混名函数名与出错函数的混名函数名不同,更新出错指令的地址,并重复上述混名函数名和行数的获取步骤,直至获取到的混名函数名与出错函数的混名函数名相同,将获取到的行数作为目标文件中出错源代码的行数,目标文件为程序所对应的源文件。
可选地,在根据本发明的程序运行错误时定位源代码的方法中,在更新出错指令的地址的步骤中,通过将出错指令的地址减去预设值来更新出错指令的地址,预设值为一个指令所占的字节数。
可选地,在根据本发明的程序运行错误时定位源代码的方法中,根据程序的程序名以及从程序运行错误时对应的调用栈中获得的错误提示信息,获取出错指令的地址的步骤,包括:根据程序的程序名以及出错函数的函数名,获取出错函数的地址;根据出错函数的地址以及出错指令的偏移量,获取出错指令的地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉深之度科技有限公司,未经武汉深之度科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110456935.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种情感分类方法及设备
- 下一篇:一种物品信息交互管理方法、系统、设备和介质