数据处理方法、装置、设备及可读存储介质制造方法及图纸

技术编号:38901453 阅读:11 留言:0更新日期:2023-09-22 14:20
本申请实施例提供了一种数据处理方法、装置、设备及可读存储介质,涉及云技术领域、地图领域等,应用场景包括但不限于云游戏等场景。该方法包括:若目标线程出现异常,则获取目标线程对应的函数栈的上下文信息,以及目标线程对应的汇编信息;基于函数栈的上下文信息,确定转储文件;基于转储文件以及目标线程对应的汇编信息,确定目标线程出现异常的相关信息。该方法通过转储文件结合目标线程对应的汇编信息,丰富了用于定位目标线程异常的信息,从而提高了处理目标线程异常的效率。而提高了处理目标线程异常的效率。而提高了处理目标线程异常的效率。

【技术实现步骤摘要】
数据处理方法、装置、设备及可读存储介质


[0001]本申请涉及计算机
,具体而言,本申请涉及一种数据处理方法、装置、设备及可读存储介质。

技术介绍

[0002]在iOS(移动操作系统)开发中,最常见的错误就是虽然APP(Application,应用程序)成功经过编译运行,但是总是有各种各样的iOS APP Crash(移动操作系统的应用程序异常),移动操作系统的应用程序异常直接造成应用程序的闪退,从而影响了用户的体验。例如,应用程序执行了某些不被允许的操作,触发了移动操作系统抛出异常信号,但又没有处理这些异常信号,从而出现异常现象。当移动操作系统的应用程序异常,即应用程序中的线程出现异常,则生成Crash log(异常日志),由于异常日志中的信息太少,无法定位应用程序中线程的异常,即无法确定线程出现异常的原因,从而降低了处理线程异常的效率。

技术实现思路

[0003]本申请针对现有的方式的缺点,提出一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品,用于解决如何提高处理线程异常的效率的问题。
[0004]第一方面,本申请提供了一种数据处理方法,包括:
[0005]若目标线程出现异常,则获取目标线程对应的函数栈的上下文信息,以及目标线程对应的汇编信息;
[0006]基于函数栈的上下文信息,确定转储文件;
[0007]基于转储文件以及目标线程对应的汇编信息,确定目标线程出现异常的相关信息。
[0008]在一个实施例中,获取目标线程对应的函数栈的上下文信息,包括:
[0009]对目标线程对应的函数栈进行栈帧回溯,得到目标线程对应的函数栈的上下文信息,函数栈的上下文信息包括函数栈中各栈帧的变量。
[0010]在一个实施例中,函数栈的上下文信息包括函数栈中各栈帧的变量,基于函数栈的上下文信息,确定转储文件,包括:
[0011]确定函数栈中各栈帧的变量的变量类型;
[0012]基于函数栈中各栈帧的变量,以及函数栈中各栈帧的变量的变量类型,确定转储文件。
[0013]在一个实施例中,确定函数栈中各栈帧的变量的变量类型,包括:
[0014]若确定函数栈中各栈帧的任一变量满足预设判定条件,则确定该变量的变量类型为非基本类型变量,非基本类型变量包括非可读对象、可读对象中的任意一项。
[0015]在一个实施例中,函数栈中各栈帧的任一变量满足预设判定条件,包括以下至少一项:
[0016]函数栈中各栈帧的任一变量与预设第一数值之间相除的余数,为预设第二数值;
[0017]函数栈中各栈帧的任一变量的预定字节位的字节,为预设第三数值;
[0018]函数栈中各栈帧的任一变量为可读地址。
[0019]在一个实施例中,非可读对象包括Objective

C对象和TaggedPointer对象,可读对象为堆对象,确定各栈帧的任一变量的变量类型为非基本类型变量,包括:
[0020]若确定各栈帧的任一变量的格式与预设Objective

C格式相同,则确定各栈帧的任一变量的变量类型为Objective

C对象;
[0021]若确定各栈帧的任一变量的格式与预设TaggedPointer格式相同,则确定各栈帧的任一变量的变量类型为TaggedPointer对象;
[0022]若确定各栈帧的任一变量的格式与预设Objective

C格式不同,且各栈帧的任一变量的格式与预设TaggedPointer格式不同,则确定各栈帧的任一变量的变量类型为堆对象。
[0023]在一个实施例中,函数栈中各栈帧的任一变量的变量类型为Objective

C对象、TaggedPointer对象、堆对象、基本类型变量中的任意一种;基于函数栈中各栈帧的变量,以及函数栈中各栈帧的变量的变量类型,确定转储文件,包括:
[0024]将变量类型为Objective

C对象的变量,进行转换处理,得到变量类型为Objective

C对象的变量对应的可读内容;
[0025]将变量类型为TaggedPointer对象的变量,进行转换处理,得到变量类型为TaggedPointer对象的变量对应的可读内容;
[0026]基于变量类型为Objective

C对象的变量对应的可读内容、变量类型为TaggedPointer对象的变量对应的可读内容、变量类型为堆对象的变量,以及变量类型为基本类型变量的变量,确定转储文件。
[0027]第二方面,本申请提供了一种数据处理装置,包括:
[0028]第一处理模块,用于若目标线程出现异常,则获取目标线程对应的函数栈的上下文信息,以及目标线程对应的汇编信息;
[0029]第二处理模块,用于基于函数栈的上下文信息,确定转储文件;
[0030]第三处理模块,用于基于转储文件以及目标线程对应的汇编信息,确定目标线程出现异常的相关信息。
[0031]第三方面,本申请提供了一种电子设备,包括:处理器、存储器和总线;
[0032]总线,用于连接处理器和存储器;
[0033]存储器,用于存储操作指令;
[0034]处理器,用于通过调用操作指令,执行本申请第一方面的数据处理方法。
[0035]第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本申请第一方面的数据处理方法。
[0036]第五方面,本申请提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请第一方面中数据处理方法的步骤。
[0037]本申请实施例提供的技术方案,至少具有如下有益效果:
[0038]若目标线程出现异常,则获取目标线程对应的函数栈的上下文信息,以及目标线程对应的汇编信息;基于函数栈的上下文信息,确定转储文件;基于转储文件以及目标线程对应的汇编信息,确定目标线程出现异常的相关信息。如此,通过转储文件结合目标线程对
应的汇编信息,丰富了用于定位目标线程异常的信息,从而提高了处理目标线程异常的效率。
附图说明
[0039]为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
[0040]图1为本申请实施例提供的数据处理系统的架构示意图;
[0041]图2为本申请实施例提供的一种数据处理方法的流程示意图;
[0042]图3为本申请实施例提供的函数栈的示意图;
[0043]图4为本申请实施例提供的预设Objective

C格式的示意图;
[0044]图5为本申请实施例提供的预设TaggedPointer格式的示意图;
[0045]图6为本申请实施例提供的另一种数据处理方法的流程示意图;
[0046]图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据处理方法,其特征在于,包括:若目标线程出现异常,则获取所述目标线程对应的函数栈的上下文信息,以及所述目标线程对应的汇编信息;基于所述函数栈的上下文信息,确定转储文件;基于所述转储文件以及所述目标线程对应的汇编信息,确定所述目标线程出现异常的相关信息。2.根据权利要求1所述的方法,其特征在于,所述获取所述目标线程对应的函数栈的上下文信息,包括:对所述目标线程对应的函数栈进行栈帧回溯,得到所述目标线程对应的函数栈的上下文信息,所述函数栈的上下文信息包括所述函数栈中各栈帧的变量。3.根据权利要求1所述的方法,其特征在于,所述函数栈的上下文信息包括所述函数栈中各栈帧的变量,所述基于所述函数栈的上下文信息,确定转储文件,包括:确定所述函数栈中各栈帧的变量的变量类型;基于所述函数栈中各栈帧的变量,以及所述函数栈中各栈帧的变量的变量类型,确定转储文件。4.根据权利要求3所述的方法,其特征在于,所述确定所述函数栈中各栈帧的变量的变量类型,包括:若确定所述函数栈中各栈帧的任一变量满足预设判定条件,则确定该变量的变量类型为非基本类型变量,所述非基本类型变量包括非可读对象、可读对象中的任意一项。5.根据权利要求4所述的方法,其特征在于,所述函数栈中各栈帧的任一变量满足预设判定条件,包括以下至少一项:所述函数栈中各栈帧的任一变量与预设第一数值之间相除的余数,为预设第二数值;所述函数栈中各栈帧的任一变量的预定字节位的字节,为预设第三数值;所述函数栈中各栈帧的任一变量为可读地址。6.根据权利要求4所述的方法,其特征在于,所述非可读对象包括Objective

C对象和TaggedPointer对象,所述可读对象为堆对象,所述确定所述各栈帧的任一变量的变量类型为非基本类型变量,包括:若确定所述各栈帧的任一变量的格式与预设Objective

C格式相同,则确定所述各栈帧的任一变量的变量类型为所述Objective

C对象;若确定所述各栈帧的任一变量的格式与预设TaggedPointer格式相同,则确定所述各栈帧的任一变量的变...

【专利技术属性】
技术研发人员:宋少鸿
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1