本申请涉及计算机,具体而言,本申请涉及一种数据处理方法、装置、设备及可读存储介质。
背景技术:
1、在ios(移动操作系统)开发中,最常见的错误就是虽然app(application,应用程序)成功经过编译运行,但是总是有各种各样的ios app crash(移动操作系统的应用程序异常),移动操作系统的应用程序异常直接造成应用程序的闪退,从而影响了用户的体验。例如,应用程序执行了某些不被允许的操作,触发了移动操作系统抛出异常信号,但又没有处理这些异常信号,从而出现异常现象。当移动操作系统的应用程序异常,即应用程序中的线程出现异常,则生成crash log(异常日志),由于异常日志中的信息太少,无法定位应用程序中线程的异常,即无法确定线程出现异常的原因,从而降低了处理线程异常的效率。
技术实现思路
1、本申请针对现有的方式的缺点,提出一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品,用于解决如何提高处理线程异常的效率的问题。
2、第一方面,本申请提供了一种数据处理方法,包括:
3、若目标线程出现异常,则获取目标线程对应的函数栈的上下文信息,以及目标线程对应的汇编信息;
4、基于函数栈的上下文信息,确定转储文件;
5、基于转储文件以及目标线程对应的汇编信息,确定目标线程出现异常的相关信息。
6、在一个实施例中,获取目标线程对应的函数栈的上下文信息,包括:
7、对目标线程对应的函数栈进行栈帧回溯,得到目标线程对应的函数栈的上下文信息,函数栈的上下文信息包括函数栈中各栈帧的变量。
8、在一个实施例中,函数栈的上下文信息包括函数栈中各栈帧的变量,基于函数栈的上下文信息,确定转储文件,包括:
9、确定函数栈中各栈帧的变量的变量类型;
10、基于函数栈中各栈帧的变量,以及函数栈中各栈帧的变量的变量类型,确定转储文件。
11、在一个实施例中,确定函数栈中各栈帧的变量的变量类型,包括:
12、若确定函数栈中各栈帧的任一变量满足预设判定条件,则确定该变量的变量类型为非基本类型变量,非基本类型变量包括非可读对象、可读对象中的任意一项。
13、在一个实施例中,函数栈中各栈帧的任一变量满足预设判定条件,包括以下至少一项:
14、函数栈中各栈帧的任一变量与预设第一数值之间相除的余数,为预设第二数值;
15、函数栈中各栈帧的任一变量的预定字节位的字节,为预设第三数值;
16、函数栈中各栈帧的任一变量为可读地址。
17、在一个实施例中,非可读对象包括objective-c对象和taggedpointer对象,可读对象为堆对象,确定各栈帧的任一变量的变量类型为非基本类型变量,包括:
18、若确定各栈帧的任一变量的格式与预设objective-c格式相同,则确定各栈帧的任一变量的变量类型为objective-c对象;
19、若确定各栈帧的任一变量的格式与预设taggedpointer格式相同,则确定各栈帧的任一变量的变量类型为taggedpointer对象;
20、若确定各栈帧的任一变量的格式与预设objective-c格式不同,且各栈帧的任一变量的格式与预设taggedpointer格式不同,则确定各栈帧的任一变量的变量类型为堆对象。
21、在一个实施例中,函数栈中各栈帧的任一变量的变量类型为objective-c对象、taggedpointer对象、堆对象、基本类型变量中的任意一种;基于函数栈中各栈帧的变量,以及函数栈中各栈帧的变量的变量类型,确定转储文件,包括:
22、将变量类型为objective-c对象的变量,进行转换处理,得到变量类型为objective-c对象的变量对应的可读内容;
23、将变量类型为taggedpointer对象的变量,进行转换处理,得到变量类型为taggedpointer对象的变量对应的可读内容;
24、基于变量类型为objective-c对象的变量对应的可读内容、变量类型为taggedpointer对象的变量对应的可读内容、变量类型为堆对象的变量,以及变量类型为基本类型变量的变量,确定转储文件。
25、第二方面,本申请提供了一种数据处理装置,包括:
26、第一处理模块,用于若目标线程出现异常,则获取目标线程对应的函数栈的上下文信息,以及目标线程对应的汇编信息;
27、第二处理模块,用于基于函数栈的上下文信息,确定转储文件;
28、第三处理模块,用于基于转储文件以及目标线程对应的汇编信息,确定目标线程出现异常的相关信息。
29、第三方面,本申请提供了一种电子设备,包括:处理器、存储器和总线;
30、总线,用于连接处理器和存储器;
31、存储器,用于存储操作指令;
32、处理器,用于通过调用操作指令,执行本申请第一方面的数据处理方法。
33、第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本申请第一方面的数据处理方法。
34、第五方面,本申请提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请第一方面中数据处理方法的步骤。
35、本申请实施例提供的技术方案,至少具有如下有益效果:
36、若目标线程出现异常,则获取目标线程对应的函数栈的上下文信息,以及目标线程对应的汇编信息;基于函数栈的上下文信息,确定转储文件;基于转储文件以及目标线程对应的汇编信息,确定目标线程出现异常的相关信息。如此,通过转储文件结合目标线程对应的汇编信息,丰富了用于定位目标线程异常的信息,从而提高了处理目标线程异常的效率。
1.一种数据处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述获取所述目标线程对应的函数栈的上下文信息,包括:
3.根据权利要求1所述的方法,其特征在于,所述函数栈的上下文信息包括所述函数栈中各栈帧的变量,所述基于所述函数栈的上下文信息,确定转储文件,包括:
4.根据权利要求3所述的方法,其特征在于,所述确定所述函数栈中各栈帧的变量的变量类型,包括:
5.根据权利要求4所述的方法,其特征在于,所述函数栈中各栈帧的任一变量满足预设判定条件,包括以下至少一项:
6.根据权利要求4所述的方法,其特征在于,所述非可读对象包括objective-c对象和taggedpointer对象,所述可读对象为堆对象,所述确定所述各栈帧的任一变量的变量类型为非基本类型变量,包括:
7.根据权利要求3所述的方法,其特征在于,所述函数栈中各栈帧的任一变量的变量类型为objective-c对象、taggedpointer对象、堆对象、基本类型变量中的任意一种;所述基于所述函数栈中各栈帧的变量,以及所述函数栈中各栈帧的变量的变量类型,确定转储文件,包括:
8.一种数据处理装置,其特征在于,包括:
9.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。