一种软件异常定位方法、系统装置及介质制造方法及图纸

技术编号:37872169 阅读:18 留言:0更新日期:2023-06-15 21:01
本发明专利技术公开了一种软件异常定位方法、系统、装置及介质,其方法包括:获取异常信息指针,根据异常信息指针,获取当前线程的上下文环境,对栈帧原始信息进行初始化,循环读取初始化后的栈帧原始信息,根据当前线程的上下文环境获取异常的源码文件和路径并输出;本申请可以在软件崩溃时可以快速定位到异常信息,并根据异常信息生成可读的文件,使得软件异常问题的处理更加高效。题的处理更加高效。题的处理更加高效。

【技术实现步骤摘要】
一种软件异常定位方法、系统装置及介质


[0001]本专利技术涉及软件工程
,特别涉及一种软件异常定位方法、系统、装置及介质。

技术介绍

[0002]随着软件技术的快速发展,软件系统的规模也越来越大,复杂程度也在逐步提升,因此,随之而来的问题也越来越多,软件异常崩溃则是软件开发和运行过程中经常出现的问题,特别是对于一些大型的软件系统,如果不及时处理,可能会造成严重的经济损失。
[0003]一般而言,当软件出现异常崩溃时,软件都会生成一个崩溃报告,报告一般用于记录当前单元的异常信息,这种信息有助于识别确定导致异常崩溃的根本原因,预测崩溃故障是否位于堆栈迹中可以帮助开发人员节省调试工作,但是,根据预测崩溃故障来对异常代码进行精确定位,却还是需要花费许多时间,为软件的异常处理工作带来不便。
[0004]因此,如何提供一种快速的软件异常定位方法,是本领域技术人员亟待解决的问题。

技术实现思路

[0005]本申请实施例提供了一种软件异常定位方法、系统、装置及介质,旨在解决现有技术无法在软件出现异常时快速定位异常代码的问题。
[0006]第一方面,本申请提供了一种软件异常定位方法,该方法包括:获取异常信息指针,根据异常信息指针,获取当前线程的上下文环境;对栈帧原始信息进行初始化;循环读取初始化后的栈帧原始信息,根据当前线程的上下文环境获取异常的源码文件和路径并输出。
[0007]一种实施方式中,获取异常信息指针,包括:根据指针空值获取异常信息指针,或,设置异常捕获函数或者异常信息指针,或,利用异常获取函数获取异常信息指针。
[0008]一种实施方式中,异常信息指针包括:异常类型和线程上下文。
[0009]一种实施方式中,根据异常信息指针,获取当前线程的上下文环境,包括:根据异常信息指针的异常类型和线程上下文,获取当前线程的上下文环境。
[0010]一种实施方式中,对栈帧原始信息进行初始化,包括:根据软件当前运行的平台信息,对栈帧原始信息进行初始化。
[0011]一种实施方式中,循环从寄存器读取初始化后的栈帧原始信息,获取异常的源码文件和路径并输出,包括:循环从寄存器读取初始化后的栈帧原始信息,获取模块名、源码文件名、源码文件行数和函数名,根据模块名、源码文件名、源码文件行数、函数名和当前线程的上下文信息,得到异常的源码文件和路径并输出。
[0012]一种实施方式中,获取异常信息指针之后,包括:对符号表进行初始化。
[0013]第二方面,本申请还提供了一种软件异常定位系统,该系统包括:上下文环境获取模块,用于获取异常信息指针,根据异常信息指针,获取当前线程的上下文环境;初始化模块,用于对栈帧原始信息进行初始化;异常定位模块,用于循环读取初始化后的栈帧原始信息,根据当前线程的上下文环境获取异常的源码文件和路径并输出。
[0014]第三方面,本申请还提供了一种计算机装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,处理器执行所述计算机程序时,实现如上述第一方面中任一项所述的一种软件异常定位方法。
[0015]第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时执行如上述第一方面中任一项所述的一种软件异常定位方法。
[0016]本申请提出的一种软件异常定位方法、系统、装置及介质,其相比于现有技术,还可以带来如下显著的进步:本申请可以在软件崩溃时可以快速定位到异常信息,并根据异常信息生成可读的文件,使得软件异常问题的处理更加高效。
附图说明
[0017]为了更清楚的说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见的,下面的描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0018]图1为本申请实施例提供的一种软件异常定位方法流程图。
具体实施方式
[0019]下面结合附图对本专利技术的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本专利技术,但并不构成对本专利技术的限定。此外,下面所描述的本专利技术各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
[0020]参见图1实施例所示一种软件异常定位方法流程图,该方法包括:S101、获取异常信息指针,根据异常信息指针,获取当前线程的上下文环境。
[0021]获取异常信息指针,包括:一、根据指针空值获取异常信息指针,即,直接传参nullptr来获取异常信息指针。
[0022]二、设置异常捕获函数或者异常信息指针,即,利用函数的回调函数SetUnhandledExceptionFilter的参数来获取异常信息指针;三、利用异常获取函数获取异常信息指针;即:在使用__try函数时,调用GetExceptionInformation(),从而获取异常信息指针。
[0023]本实施例提供了不同的方式来获取异常信息指针,可保证异常信息指针的正常获取,便于后续对异常信息进行定位。
[0024]在一实施例中,异常信息指针包括:异常类型和线程上下文。
[0025]异常类型,这个有利于根据类型快速定位错误;而线程上下文,则是后续对异常信息进行定位工作的基础,通过获取异常类型和线程上下文,便于后续对异常位置的快速定位。
[0026]在一实施例中,根据异常信息指针,获取当前线程的上下文环境,包括:根据异常信息指针的异常类型和线程上下文,获取当前线程的上下文环境。
[0027]或,根据异常信息指针的成员变量ContextRecord的记录信息来获取当前线程的上下文环境,上下文环境中包含了帧栈原始信息,从而保证后续的异常定位可以顺利进行。
[0028]S102、对栈帧原始信息进行初始化。
[0029]对栈帧原始信息进行初始化,包括:根据软件当前运行的平台信息,对栈帧原始信息进行初始化。
[0030]根据上下文环境得到帧栈原始信息后,根据软件当前运行的平台信息,如:win32、WIN64对帧栈的原始信息进行初始化,使得软件可以更契合当前的平台,避免后续的异常定位失败。
[0031]S103、循环读取初始化后的栈帧原始信息,根据当前线程的上下文环境获取异常的源码文件和路径并输出。
[0032]循环从寄存器读取初始化后的栈帧原始信息,获取模块名、源码文件名、源码文件行数和函数名,根据模块名、源码文件名、源码文件行数、函数名和当前线程的上下文信息,得到异常的源码文件和路径并输出;通过获取异常的源码文件和路径,生成可读的dump.txt文档并输出,当软件出现异常崩溃时,软件工程师可以快速定位发生异常的代码行,即使软件工程师不在现场,其他人员也可以记录关键调用堆栈。
[0033]在一实施例中,获取异常信息指针之后,包括:对符号表进行初始化。
[0034]一般是从exe所在目录本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件异常定位方法,其特征在于,包括:获取异常信息指针,根据异常信息指针,获取当前线程的上下文环境;对栈帧原始信息进行初始化;循环读取初始化后的栈帧原始信息,根据当前线程的上下文环境获取异常的源码文件和路径并输出。2.如权利要求1所述的一种软件异常定位方法,其特征在于,所述获取异常信息指针,包括:根据指针空值获取异常信息指针,或,设置异常捕获函数或者异常信息指针,或,利用异常获取函数获取异常信息指针。3.如权利要求2所述的一种软件异常定位方法,其特征在于,所述异常信息指针包括:异常类型和线程上下文。4.如权利要求3所述的一种软件异常定位方法,其特征在于,所述根据异常信息指针,获取当前线程的上下文环境,包括:根据异常信息指针的异常类型和线程上下文,获取当前线程的上下文环境。5.如权利要求4所述的一种软件异常定位方法,其特征在于,所述对栈帧原始信息进行初始化,包括:根据软件当前运行的平台信息,对栈帧原始信息进行初始化。6.如权利要求5所述的一种软件异常定位方法,其特征在于,所述循环从寄存器读取初始化后的栈帧原始信息,获取异常的源码文件和路径并输出,包括:循环从...

【专利技术属性】
技术研发人员:张俊峰何志丹
申请(专利权)人:超音速人工智能科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1