一种对错误代码进行定位的方法及相关装置制造方法及图纸

技术编号:36708284 阅读:13 留言:0更新日期:2023-03-01 09:32
本说明书一个或多个实施例公开了一种对错误代码进行定位的方法及相关装置,该方法通过对能够支持并发执行的多个虚拟机对应的工作线程的执行过程进行追踪,并记录能够表示解释器运行状态的堆栈信息;在进程异常时,且判断该进程异常是由虚拟机的工作线程引发的情况下,基于回调信息中的线程标识查找对引发异常的工作线程进行追踪的追踪组件,进而获取该追踪组件记录的堆栈信息,并根据该堆栈信息中最新栈帧定位到错误代码,甚至还可以进行堆栈回溯,定位到错误代码的代码名称、代码行等代码详情。可见,利用追踪记录的堆栈信息及时精准定位到错误代码,甚至错误代码行等代码详情,提升了定位问题的精准度。提升了定位问题的精准度。提升了定位问题的精准度。

【技术实现步骤摘要】
一种对错误代码进行定位的方法及相关装置


[0001]本文件涉及计算机
,尤其涉及一种对错误代码进行定位的方法及相关装置。

技术介绍

[0002]在端侧利用虚拟机并行执行应用程序的多个线程,是目前应用客户端常用的加载执行方式。但是,在端侧复杂环境中存在一定量的线程崩溃异常,这些崩溃异常的产生,不一定是虚拟机本身的问题,很大程度上是由于某个脚本或某段逻辑形成的错误代码在执行时触发。
[0003]虽然现有技术中有针对端侧多虚拟机执行环境下进程崩溃的问题定位,但是,最终只能定位到引发崩溃异常的问题任务,无法精准定位引发异常的错误代码。

技术实现思路

[0004]本说明书一个或多个实施例的目的是提供一种对错误代码进行定位的方法及相关装置,通过对每个虚拟机的工作线程进行追踪记录,以便于在由虚拟机的工作线程出错而导致进程异常时,精准定位引发异常的错误代码。
[0005]为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
[0006]第一方面,提出了一种对错误代码进行定位的方法,应用于包含多个虚拟机的终端,所述多个虚拟机支持并发执行,且每个虚拟机对应一个工作线程,每个工作线程配置有追踪组件,以对工作线程进行独立追踪记录;所述方法包括:
[0007]在检测到应用进程异常时,根据回调信息判断引发异常的工作线程是否为虚拟机的工作线程,其中,所述回调信息至少包含线程标识和线程状态;
[0008]如果是虚拟机的工作线程,则根据所述回调信息中的线程标识查找该虚拟机的工作线程对应的追踪组件;
[0009]基于查找到的追踪组件获取对所述虚拟机的工作线程进行追踪记录的堆栈信息,其中,不同虚拟机的工作线程被追踪组件追踪记录的堆栈信息之间相互隔离存储;
[0010]基于获取到的堆栈信息中最新栈帧定位错误代码。
[0011]第二方面,提出了一种对错误代码进行定位的装置,应用于包含多个虚拟机的终端,所述多个虚拟机支持并发执行,且每个虚拟机对应一个工作线程,每个工作线程配置有追踪组件,以对工作线程进行独立追踪记录;所述装置包括:
[0012]判断模块,用于在检测到应用进程异常时,根据回调信息判断引发异常的工作线程是否为虚拟机的工作线程,其中,所述回调信息至少包含线程标识和线程状态;
[0013]查找模块,用于在判断模块判断引发异常的工作线程是虚拟机的工作线程时,根据所述回调信息中的线程标识查找该虚拟机的工作线程对应的追踪组件;
[0014]获取模块,用于基于查找到的追踪组件获取对所述虚拟机的工作线程进行追踪记录的堆栈信息,其中,不同虚拟机的工作线程被追踪组件追踪记录的堆栈信息之间相互隔
离存储;
[0015]定位模块,用于基于获取到的堆栈信息中最新栈帧定位错误代码。
[0016]第三方面,提出了一种电子设备,包括:
[0017]处理器;以及
[0018]被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行第一方面所述的对错误代码进行定位的方法。
[0019]第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行第一方面所述的对错误代码进行定位的方法。
[0020]由以上说明书一个或多个实施例提供的技术方案可见,通过对能够支持并发执行的多个虚拟机对应的工作线程的执行过程进行追踪,并记录能够表示解释器运行状态的堆栈信息;在进程异常时,且判断该进程异常是由虚拟机的工作线程引发的情况下,基于回调信息中的线程标识查找对引发异常的工作线程进行追踪的追踪组件,进而获取该追踪组件记录的堆栈信息,并根据该堆栈信息中最新栈帧定位到错误代码,甚至还可以进行堆栈回溯,定位到错误代码的代码名称、代码行等代码详情。可见,由于通过对虚拟机的工作线程进行追踪,并记录堆栈信息,可以在进程异常时,利用追踪记录的堆栈信息及时精准定位到错误代码,甚至错误代码行等代码详情,提升了定位问题的精准度,方便对相关任务进行下线或改写进行止损,为问题修复提供了较好的引导参照。
附图说明
[0021]为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对一个或多个实施例或现有技术描述中所需要使用的附图做简单介绍,显而易见地,以下描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022]图1是本说明书实施例提供的一种对错误代码进行定位的方法步骤示意图。
[0023]图2是本说明书实施例提供的端侧中多个虚拟机对应的工作线程的原理示意图。
[0024]图3是本说明书实施例提供的对错误代码进行定位的流程示意图。
[0025]图4是本说明书实施例提供的一种对错误代码进行定位的装置结构示意图。
[0026]图5是本说明书的一个实施例提供的电子设备的结构示意图。
具体实施方式
[0027]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的一个或多个实施例只是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
[0028]如
技术介绍
所言,目前针对端侧复杂环境中产生的进程崩溃异常,只能定位到问题任务的粒度级别,进而根据问题任务执行较大粒度的修复,这无疑给定位以及修复精度带来中伤。鉴于定位以及修复问题的粒度较大而无法保证定位精准的问题,本说明书实施
例提出了一种对错误代码进行定位的方案,主要构思在于:通过对能够支持并发执行的多个虚拟机对应的工作线程的执行过程进行追踪,并记录能够表示解释器运行状态的堆栈信息;在进程异常时,且判断该进程异常是由虚拟机的工作线程引发的情况下,基于回调信息中的线程标识查找对引发异常的工作线程进行追踪的追踪组件,进而获取该追踪组件记录的堆栈信息,并根据该堆栈信息中最新栈帧定位到错误代码,甚至还可以进行堆栈回溯,定位到错误代码的代码名称、代码行等代码详情。可见,由于通过对虚拟机的工作线程进行追踪,并记录堆栈信息,可以在进程异常时,利用追踪记录的堆栈信息及时精准定位到错误代码,甚至错误代码行等代码详情,提升了定位问题的精准度,方便对相关任务进行下线或改写进行止损,为问题修复提供了较好的引导参照。
[0029]需要说明的是,本说明书实施例中端侧环境下虚拟机所执行的程序代码的脚本语言可以是Python,也可以是C语言或C++或者Java等其它脚本语言,本说明书以Python虚拟机的端侧环境为例进行说明,但是并不对脚本语言的类型进行限定。
[0030]参照图1所示,为本说明书实施例提供的一种对错误代码进本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对错误代码进行定位的方法,应用于包含多个虚拟机的终端,所述多个虚拟机支持并发执行,且每个虚拟机对应一个工作线程,每个工作线程配置有追踪组件,以对工作线程进行独立追踪记录;所述方法包括:在检测到应用进程异常时,根据回调信息判断引发异常的工作线程是否为虚拟机的工作线程,其中,所述回调信息至少包含线程标识和线程状态;如果是虚拟机的工作线程,则根据所述回调信息中的线程标识查找该虚拟机的工作线程对应的追踪组件;基于查找到的追踪组件获取对所述虚拟机的工作线程进行追踪记录的堆栈信息,其中,不同虚拟机的工作线程被追踪组件追踪记录的堆栈信息之间相互隔离存储;基于获取到的堆栈信息中最新栈帧定位错误代码。2.如权利要求1所述的对错误代码进行定位的方法,基于获取到的堆栈信息中最新栈帧定位错误代码,包括:从获取到的堆栈信息中确定最新栈帧;基于所述最新栈帧进行堆栈回溯,确定错误代码的代码详情,所述代码详情包括代码名称、代码行以及指令内容。3.如权利要求2所述的对错误代码进行定位的方法,在基于获取到的堆栈信息中最新栈帧定位错误代码之后,所述方法还包括:将错误代码的代码详情写入预分配的信息存储空间,并添加至异常日志中进行异常上报。4.如权利要求1

3任一项所述的对错误代码进行定位的方法,所述工作线程是利用可移植操作系统接口线程专有的应用程序接口进行线程级别的信息存储;且当检测到应用进程异常时,与应用进程执行相关的工作线程均被挂起。5.如权利要求1

3任一项所述的对错误代码进行定位的方法,所述堆栈信息通过以下方式进行追踪记录:所述追踪组件对工作线程中执行的栈帧进行追踪,并在栈帧的执行入口进行记录。6....

【专利技术属性】
技术研发人员:修玉同
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

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

1