堆栈信息处理方法、装置、电子设备和存储介质制造方法及图纸

技术编号:30424635 阅读:9 留言:0更新日期:2021-10-24 16:55
本申请涉及一种堆栈信息处理方法、装置、电子设备和存储介质,通过预先在目标信息发送函数中加载钩子函数,可以获取应用程序在进行函数调用事件时的函数调用信息,并对崩溃堆栈进行更新。在函数调用出现问题,导致应用程序运行崩溃时,根据崩溃堆栈保存的函数调用信息即可得到符号化的堆栈信息。由于该符号化的堆栈信息包括有正在进行的函数调用事件对应的函数调用信息,而该正在进行的函数调用事件导致了应用程序崩溃,开发人员可以直接根据符号化的堆栈信息确定导致应用程序崩溃的具体原因,而无需依赖dSYM文件以及符号化工具等,从而有助于提高软件开发效率。而有助于提高软件开发效率。而有助于提高软件开发效率。

【技术实现步骤摘要】
堆栈信息处理方法、装置、电子设备和存储介质


[0001]本申请涉及信息处理
,特别是涉及一种堆栈信息处理方法、装置、电子设备和存储介质。

技术介绍

[0002]随着科技水平的提高,出现了各种类型的应用程序(Application,APP),APP广泛应用于用户的设备终端,如手机、平板等。在开发人员完成APP的开发后,会将该APP发布至网络,用户可以自行下载并使用。用户在使用APP的过程中,可能会出现应用程序报错、对应进程消失或者对应服务自动停止的情况,即出现APP崩溃(Crash)的情况。
[0003]在出现APP崩溃的情况时,开发人员需要确定APP崩溃的原因。现有技术中,通常是开发人员首先获取编译该APP时生成的dSYM文件,然后基于该dSYM文件,使用符号化工具进行符号化处理,然后再根据符号化处理的结果来进行分析,从而确定崩溃原因。
[0004]然而,现有技术的上述处理过程都需要开发人员手动操作,且需要借助其他文件及工具,步骤繁琐,从而影响开发效率。

技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种能够有助于提高开发效率的堆栈信息处理方法、装置、电子设备和存储介质。
[0006]一种堆栈信息处理方法,所述方法包括:
[0007]当监测到应用程序通过目标信息发送函数进行函数调用事件,执行预先加载在所述目标信息发送函数中的钩子函数;
[0008]通过所述钩子函数,获取所述函数调用事件中的函数调用信息,所述函数调用信息包含被调用函数的函数相关信息;
[0009]根据所述函数调用信息中的所述函数相关信息,更新崩溃堆栈;
[0010]在所述应用程序运行崩溃时,基于所述崩溃堆栈得到符号化的堆栈信息。
[0011]一种堆栈信息处理装置,所述装置包括:
[0012]钩子执行模块,用于当监测到应用程序通过目标信息发送函数进行函数调用事件,执行预先加载在所述目标信息发送函数中的钩子函数;
[0013]信息获取模块,用于通过所述钩子函数,获取所述函数调用事件中的函数调用信息,所述函数调用信息包含被调用函数的函数相关信息;
[0014]堆栈更新模块,用于根据所述函数调用信息中的所述函数相关信息,更新崩溃堆栈;
[0015]信息处理模块,用于在所述应用程序运行崩溃时,基于所述崩溃堆栈得到符号化的堆栈信息。
[0016]一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0017]当监测到应用程序通过目标信息发送函数进行函数调用事件,执行预先加载在所述目标信息发送函数中的钩子函数;
[0018]通过所述钩子函数,获取所述函数调用事件中的函数调用信息,所述函数调用信息包含被调用函数的函数相关信息;
[0019]根据所述函数调用信息中的所述函数相关信息,更新崩溃堆栈;
[0020]在所述应用程序运行崩溃时,基于所述崩溃堆栈得到符号化的堆栈信息。
[0021]一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0022]当监测到应用程序通过目标信息发送函数进行函数调用事件,执行预先加载在所述目标信息发送函数中的钩子函数;
[0023]通过所述钩子函数,获取所述函数调用事件中的函数调用信息,所述函数调用信息包含被调用函数的函数相关信息;
[0024]根据所述函数调用信息中的所述函数相关信息,更新崩溃堆栈;
[0025]在所述应用程序运行崩溃时,基于所述崩溃堆栈得到符号化的堆栈信息。
[0026]上述堆栈信息处理方法、装置、电子设备和存储介质,当监测到应用程序通过目标信息发送函数进行函数调用事件,执行预先加载在目标信息发送函数中的钩子函数;通过钩子函数,获取函数调用事件中的函数调用信息,函数调用信息包含被调用函数的函数相关信息;根据函数调用信息中的函数相关信息,更新崩溃堆栈;在应用程序运行崩溃时,基于崩溃堆栈得到符号化的堆栈信息。
[0027]本申请中,通过预先在目标信息发送函数中加载钩子函数,可以获取应用程序在进行函数调用事件时的函数调用信息,并对崩溃堆栈进行更新。在函数调用出现问题,导致应用程序运行崩溃时,根据崩溃堆栈保存的函数调用信息即可得到符号化的堆栈信息。由于该符号化的堆栈信息包括有正在进行的函数调用事件对应的函数调用信息,而该正在进行的函数调用事件导致了应用程序崩溃,开发人员可以直接根据符号化的堆栈信息确定导致应用程序崩溃的具体原因,而无需依赖dSYM文件以及符号化工具等,从而有助于提高软件开发效率。
附图说明
[0028]图1为一个实施例中堆栈信息处理方法的流程示意图;
[0029]图2为一个实施例中未被符号化的堆栈信息的实例图;
[0030]图3为另一个实施例中符号化的堆栈信息的实例图;
[0031]图4为一个实施例中崩溃堆栈保存函数相关信息的示意图;
[0032]图5为一个实施例中删除崩溃堆栈中的函数相关信息的示意图;
[0033]图6为一个实施例中基于崩溃堆栈得到符号化的堆栈信息的流程示意图;
[0034]图7为另一个实施例中堆栈信息处理方法的流程示意图;
[0035]图8为一个实施例中显示有符号化的堆栈信息的屏幕界面示意图;
[0036]图9(a)为一个实施例中现有技术中的函数调用流程的示意图;
[0037]图9(b)为一个实施例中本申请中的函数调用流程的示意图;
[0038]图10为一个实施例中函数调用过程中崩溃堆栈的内容管理示意图;
[0039]图11为一个实施例中堆栈信息处理装置的结构示意图;
[0040]图12为另一个实施例中堆栈信息处理装置的结构示意图;
[0041]图13为一个实施例中电子设备的内部结构图。
具体实施方式
[0042]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0043]首先,对本申请所涉及的专业名词进行解释说明。
[0044]1、崩溃堆栈:在APP出现崩溃的情况时,用于记录当前函数调用信息的数据结构。
[0045]2、符号化处理:在未进行符号化之前,堆栈内容的是内存地址信息,符号化是指将内存地址信息转换成开发人员可以理解的符号。
[0046]2、目标信息发送函数:用于在应用运行过程中调用函数来传递消息。示意性地,对于IOS系统的APP,目标信息发送函数可以为objc_msgSend函数。objc_msgSend函数传递消息时的格式为:objc_msgSend(id self,SEL cmd,...)。objc_msgSend函数是参数个数可变的函数,该函数能接收两个或两个以上的参数。第一个参数“id self”表示消本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种堆栈信息处理方法,其特征在于,所述方法包括:当监测到应用程序通过目标信息发送函数进行函数调用事件,执行预先加载在所述目标信息发送函数中的钩子函数;通过所述钩子函数,获取所述函数调用事件中的函数调用信息,所述函数调用信息包含被调用函数的函数相关信息;根据所述函数调用信息中的所述函数相关信息,更新崩溃堆栈;在所述应用程序运行崩溃时,基于所述崩溃堆栈得到符号化的堆栈信息。2.根据权利要求1所述的堆栈信息处理方法,其特征在于,所述根据所述函数调用信息中的所述函数相关信息,更新崩溃堆栈,包括:在进行新的函数调用事件时,将第一函数的函数相关信息保存至所述崩溃堆栈,所述第一函数为新进行的函数调用事件中,被所述目标信息发送函数调用的函数。3.根据权利要求2所述的堆栈信息处理方法,其特征在于,所述将第一函数的函数相关信息保存至所述崩溃堆栈之前,还包括:若不存在崩溃堆栈,新建用于保存函数相关信息的崩溃堆栈。4.根据权利要求1所述的堆栈信息处理方法,其特征在于,所述根据所述函数调用信息中的所述函数相关信息,更新崩溃堆栈,包括:在函数调用事件完成后,将第二函数的函数相关信息从所述崩溃堆栈中删除,所述第二函数为已完成的函数调用事件中,被所述目标信息发送函数调用的函数。5.根据权利要求1所述的堆栈信息处理方法,其特征在于,在所述应用程序运行崩溃时,若所述应用程序对应的线程数量为至少两个,所述基于所述崩溃堆栈得到符号化的堆栈信息,包括:确定至少两个线程中的问题线程,所述问题线程为导致所述应用程序...

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

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

1