CN107643980A - 一种定位崩溃信息的方法与设备 - Google Patents
一种定位崩溃信息的方法与设备 Download PDFInfo
- Publication number
- CN107643980A CN107643980A CN201710720045.XA CN201710720045A CN107643980A CN 107643980 A CN107643980 A CN 107643980A CN 201710720045 A CN201710720045 A CN 201710720045A CN 107643980 A CN107643980 A CN 107643980A
- Authority
- CN
- China
- Prior art keywords
- abnormal
- crash info
- abnormal information
- function
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
本发明提供一种定位崩溃信息的方法与设备,所述方法包括:S1,当监听到崩溃信号时,利用信号处理函数解析所述崩溃信号,获取异常信息,并将所述异常信息存入给定字典;S2,将所述给定字典中的异常信息包装成异常信息包,并作为异常通知发出;S3,基于所述异常通知,通过处理所述异常信息的异常原因及所述异常信息在所述给定字典中的字典信息,定位并显示所述崩溃信号对应的崩溃信息。本发明能够有效简化崩溃信息的处理操作流程,缩短崩溃信息的处理时间,从而有效提高软件开发和测试的效率。
Description
技术领域
本发明涉及信息处理技术领域,更具体地,涉及一种定位崩溃信息的方法与设备。
背景技术
目前,随着手机移动端的快速发展,应用开发的流程逐渐繁琐化、应用程序逐渐复杂化,在进行软件开发、测试和应用的过程中,经常因为一些异常情况而导致程序崩溃。
为了对崩溃进行准确定位,目前通常的做法可以概括为以下三个步骤:
1)测试人员安装能够导出手机崩溃信息文件的软件,并通过该导出软件导出崩溃信息文件,之后发送给开发人员;
2)开发人员收到崩溃信息文件之后,需要找到或者去网站下载DYSM文件分析工具;
3)开发人员利用DYSM文件分析工具,或者命令行工具对崩溃信息文件进行解析,从而方便定位崩溃问题。
上述三个处理步骤对于一个开发流程来说,通常需要耗时4分钟~15分钟来完成,耗时相对较长,且全程需要测试开发人员参与,既耗费人力精力,又影响整体开发和测试效率。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明提供一种定位崩溃信息的方法与设备,以达到有效简化崩溃信息的处理操作流程,以及有效缩短崩溃信息的处理时间,从而有效提高开发和测试效率的目的。
一方面,本发明提供一种定位崩溃信息的方法,包括:S1,当监听到崩溃信号时,利用信号处理函数解析所述崩溃信号,获取异常信息,并将所述异常信息存入给定字典;S2,将所述给定字典中的异常信息包装成异常信息包,并作为异常通知发出;S3,基于所述异常通知,通过处理所述异常信息的异常原因及所述异常信息在所述给定字典中的字典信息,定位并显示所述崩溃信号对应的崩溃信息。
其中,所述S1的步骤进一步包括:S11,当所述信号处理函数不存在异常时,利用字典创建函数创建所述给定字典;S12,采用读取函数指针,循环利用异常信息解析函数,获取所述崩溃信号的崩溃堆栈数组中包含的异常信息;S13,采用写入函数指针,利用循环函数将所述异常信息加入异常信息数组,并将所述异常信息数组存入所述给定字典。
其中,所述S3的步骤进一步包括:监听所述异常通知,获取所述异常通知对应的异常信息的异常原因,以及所述异常信息在所述给定字典中的字典信息;基于所述异常原因定位所述崩溃信息,并将所述崩溃信息的异常原因及字典信息进行拼接,获取详细崩溃信息;通过弹框或自定义界面显示所述详细崩溃信息。
其中,所述通过弹框显示所述详细崩溃信息的步骤进一步包括:通过系统设置或自定义设置创建弹框,并利用弹框设置函数将所述详细崩溃信息设置为所述弹框的内容;利用弹框显示函数显示设置了所述详细崩溃信息的弹框。
进一步的,在所述通过弹框或自定义界面显示所述详细崩溃信息的步骤之后,所述方法还包括:利用延迟运行函数使主线程延迟设定的一段时间。
进一步的,在所述通过弹框或自定义界面显示所述详细崩溃信息的步骤之后,所述方法还包括:获取并释放运行循环中的全部运行循环线程,并利用结束线程函数结束所述崩溃信息对应的运行循环线程。
进一步的,在所述S3的步骤之后,所述方法还包括:通过将所述详细崩溃信息赋值给粘贴板的字符串,将所述详细崩溃信息复制到粘贴板。
其中,所述信号处理函数不存在异常通过以下步骤进行获取:判断异常信息存储个数与设定最大异常信息存储个数的大小关系,若所述异常信息存储个数小于所述设定最大异常信息存储个数,则返回所述信号处理函数不存在异常。
进一步的,在所述S12的步骤之前,所述方法还包括:定义所述读取函数指针和堆栈数量变量,所述堆栈数量变量用于存储所述崩溃堆栈数组中的异常信息的数量。
另一方面,本发明提供一种定位崩溃信息的设备,包括:至少一个存储器、至少一个处理器、通信接口和总线;所述存储器、所述处理器和所述通信接口通过所述总线完成相互间的通信,所述通信接口用于所述定位崩溃信息的设备与崩溃信号上传设备之间的信息传输;所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如如上所述的定位崩溃信息的方法。
本发明提供的一种定位崩溃信息的方法与设备,通过信号处理函数解析异常信息,并基于解析获取的异常信息详情实现崩溃信息的自主定位和实时显示,能够有效简化崩溃信息的处理操作流程,缩短崩溃信息的处理时间,从而有效提高软件开发和测试的效率。
附图说明
图1为本发明实施例一种定位崩溃信息的方法的流程图;
图2为本发明实施例一种解析崩溃信号的处理过程流程图;
图3为本发明实施例一种定位并显示崩溃信息的处理过程流程图;
图4为本发明实施例一种通过弹框显示详细崩溃信息的处理过程流程图;
图5为本发明实施例一种定位崩溃信息的设备的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明实施例的一个方面,本实施例提供一种定位崩溃信息的方法,参考图1,为本发明实施例一种定位崩溃信息的方法的流程图,包括:
S1,当监听到崩溃信号时,利用信号处理函数解析所述崩溃信号,获取异常信息,并将所述异常信息存入给定字典。
可以理解为,在程序运行过程中,通过崩溃信号监听函数监听相关设备发送的崩溃信号,并在监听到崩溃信号时,调用信号处理函数对该崩溃信号进行解析,获取该崩溃信号对应的各项异常信息,包括各异常信息对应的详细运行信息,如异常发生的时间、条件及原因等。然后将解析出的异常信息全部存入给定字典。所述的给定字典是事先创建的,用来保存异常信息。
例如,采用signal函数监听常见的崩溃信号。signal函数是一个C语言函数,其中定义两个参数,一个参数是需要监听的崩溃信号的类型,另一个参数是崩溃信号发生之后的回调函数。其中另一个参数的默认函数是信号处理函数(SignalHandler),崩溃信号也即异常中断的信号。异常中断信号发生之后,便会触发SignalHandler函数。
S2,将所述给定字典中的异常信息包装成异常信息包,并作为异常通知发出。
可以理解为,对于给定字典中的所有异常信息,都是单条零散的信息,为了便于全局异常处理函数能够对给定字典中的异常信息进行处理,利用信息创建函数将给定字典中的异常信息包装成一个异常信息包,例如利用创建崩溃信息的函数exceptionWithName进行异常信息的包装。然后将包装成的异常信息包作为异常通知发出,以供相关异常处理函数接收该通知,并据此做出相应的处理操作。
S3,基于所述异常通知,通过处理所述异常信息的异常原因及所述异常信息在所述给定字典中的字典信息,定位并显示所述崩溃信号对应的崩溃信息。
可以理解为,在异常处理函数接收到上述步骤发出的异常通知之后,获取该异常通知对应的异常信息的异常原因,以及各异常信息在给定字典中的字典信息。然后通过所述异常原因判断引起上述崩溃信号的崩溃信息,并结合该崩溃信息在给定字典中的字典信息,对崩溃信息进行定位和实时显示。
本发明实施例提供的一种定位崩溃信息的方法,通过信号处理函数解析异常信息,并基于解析获取的异常信息详情实现崩溃信息的自主定位和实时显示,能够有效简化崩溃信息的处理操作流程,缩短崩溃信息的处理时间,从而有效提高软件开发和测试的效率。
其中可选的,所述S1的进一步处理步骤参考图2,为本发明实施例一种解析崩溃信号的处理过程流程图,包括:
S11,当所述信号处理函数不存在异常时,利用字典创建函数创建所述给定字典。
可以理解为,在根据上述实施例调用了信息处理函数之后,首先判断该信息处理函数是否存在异常。在通过判断获知或根据状态反馈信号获知该信号处理函数不存在异常时,利用字典创建函数创建给定字典,以用来存放崩溃信号对应的异常信息。
在一个实施例中,所述信号处理函数不存在异常通过以下步骤进行判断:判断异常信息存储个数与设定最大异常信息存储个数的大小关系,若所述异常信息存储个数小于所述设定最大异常信息存储个数,则返回所述信号处理函数不存在异常。
可以理解为,在异常处理函数中,事先定义了异常信息存储个数变量和设定最大异常信息存储个数变量,其中异常信息存储个数变量通过实际异常信息数量赋值,设定最大异常信息存储个数变量通过根据需要设定赋值。通过比较赋值后的异常信息存储个数变量和设定最大异常信息存储个数变量的大小关系,确定异常信息存储个数与设定最大异常信息存储个数的大小关系。若判断获知异常信息存储个数小于设定最大异常信息存储个数,则可判定信号处理函数不存在异常,并返回该判定结果。
S12,采用读取函数指针,循环利用异常信息解析函数,获取所述崩溃信号的崩溃堆栈数组中包含的异常信息。
在一个实施例中,在所述S12的步骤之前,所述方法还包括:定义所述读取函数指针和堆栈数量变量,所述堆栈数量变量用于存储所述崩溃堆栈数组中的异常信息的数量。
可以理解为,对于一个崩溃信号,可能引起该崩溃的异常信息均存储在一个崩溃堆栈数组中。事先设置读取函数指针和堆栈数量变量,该指针指向崩溃堆栈数组中每条堆栈,该堆栈数量变量存储崩溃堆栈数组中异常信息的数量。在进行异常信息解析时,通过循环调用该读取函数指针,并利用异常信息解析函数,逐条解析崩溃堆栈数组中每条堆栈,获取堆栈对应的异常信息,以及崩溃堆栈数组中异常信息的数量。
S13,采用写入函数指针,利用循环函数将所述异常信息加入异常信息数组,并将所述异常信息数组存入所述给定字典。
可以理解为,通过循环调用事先定义的写入函数指针,将上述步骤解析获取的异常信息逐条加入事先定义的异常信息数组。所述的写入函数指针指向异常信息数组的每条异常信息。然后将返回的异常信息数组存入给定字典。
为了更清楚的说明本实施例,以下对本实施例进行举例说明,但不限制本发明的保护范围。
例如,在根据上述实施例的异常中断信号发生之后,就会触发信号处理函数SignalHandler。在这个SignalHandler函数内部,事先定义一个变量exceptionCount,该exceptionCount变量存储异常信息存储个数;同时,定义一个变量UncaughtExceptionMaximum,该变量存储设定最大异常信息存储个数。
崩溃信息处理过程中,判断exceptionCount是否比UncaughtExceptionMaximum还大,若判断结果为是,说明信号处理函数SignalHandler出现了异常,此时直接return,不执行任何信号处理的操作;否则,继续执行以下信号处理操作:
首先,利用字典创建函数dictionaryWithObject创建一个给定字典userInfo,这个字典可以用来保存所有异常信息。
然后,获取崩溃堆栈数组callStack,崩溃堆栈数组callStack中包含多条异常信息,只有获取到这些异常信息,才能够将它们显示出来。因此,定义一个读取函数指针callstack,该读取函数指针指向崩溃堆栈数组中的异常信息。同时,定义一个整型的frames变量,表示崩溃堆栈数组中堆栈的数量,接收获取堆栈数量的函数的返回值。通过调用读取函数指针callstack,利用获取崩溃详细信息的异常信息解析函数backtrace_symbols,将获取到的异常信息函数使用strs数组指针保存,其中callstack里面存放的是当前frames条异常信息。
再然后,根据事先定义的一个异常信息数组backtrace,该异常信息数组的容量为frams,先使用循环函数将strs数组指针里面的每条异常信息按照顺序加到异常信息数组backtrace中;再返回这个backtrace,返回backtrace,获取callBack数组;而后保存callBack数组到给定字典userInfo中,具体使用setObject函数将callBack数组保存到给定字典userInfo中,字典的key值为UncaughtExceptionHandlerAddressesKey。
本发明实施例提供的一种定位崩溃信息的方法,通过在信息处理函数中定义读取函数指针和写入函数指针,逐条解析崩溃堆栈数组中的异常信息,可以有效获取异常信息详情,从而为有效进行崩溃信息定位奠定基础,且可有效避免遗漏。
其中可选,所述S3的进一步处理步骤参考图3,为本发明实施例一种定位并显示崩溃信息的处理过程流程图,包括:
S31,监听所述异常通知,获取所述异常通知对应的异常信息的异常原因,以及所述异常信息在所述给定字典中的字典信息。
可以理解为,根据上述实施例,当有崩溃发生时会发出一个异常通知。本实施例中事先定义一个监听异常通知的函数,当该函数监听到异常通知时,触发异常信息处理函数,通过异常信息处理函数获取所述异常通知对应的异常信息的异常原因,该异常原因即为引起对应异常的因素。异常信息处理函数同时获取所述的异常信息在给定字典中的字典信息,包括在字典中的存储位置及异常相信信息等。
S32,基于所述异常原因定位所述崩溃信息,并将所述崩溃信息的异常原因及字典信息进行拼接,获取详细崩溃信息。
可以理解为,在上述步骤获取异常信息的异常原因之后,根据异常原因判断引起上述崩溃的异常信息,即崩溃信息。然后为了清楚的显示引起崩溃的详细信息,将崩溃信息对应的异常原因和字典信息进行拼接,拼接之后的信息即为详细崩溃信息。
S33,通过弹框或自定义界面显示所述详细崩溃信息。
可以理解为,在上述步骤获取了引起崩溃的详细崩溃信息之后,通过设置弹框或自定义界面,将详细崩溃信息显示到用户界面上。
为了更清楚的说明本实施例,以下对本实施例进行举例说明,但不限制本发明的保护范围。
例如,首先设置处理异常通知的异常信息处理函数为handleException,该函数中设置一个NSException类型的参数。当根据上述实施例监听到异常通知时,触发HandleException异常信息处理函数,来处理异常并且实时显示异常信息。具体为,首先通过HandleException函数中异常信息参数exception,获取异常信息对应的异常原因reason,以及该异常信息对应的字典信息,即userinfo信息。
然后,将上述步骤中的异常原因reason和字典信息userinfo拼接为详细崩溃信息allMsg。由于根据上述实施例中获取的异常信息是已经解析的,因此此处无需再对异常信息进行解析,就可以定位引起崩溃的原因。
再然后,设置一个弹框或者自定义一个界面,并利用该弹框或自定义界面将上述的详细崩溃信息allMsg显示出来。
本发明实施例提供的一种定位崩溃信息的方法,通过采用崩溃信息处理函数,对崩溃信息的异常原因和该崩溃信息对应的字典信息进行拼接,结合弹框或自定义界面,实现详细崩溃信息的实时显示,能够使相关人员清楚明了地观察崩溃信息,并为下一步排除崩溃故障提供方便。
在一个实施例中,所述通过弹框显示所述详细崩溃信息的进一步处理步骤参考图4,为本发明实施例一种通过弹框显示详细崩溃信息的处理过程流程图,包括:
S331,通过系统设置或自定义设置创建弹框,并利用弹框设置函数将所述详细崩溃信息设置为所述弹框的内容。
可以理解为,在进行弹框显示之前,先要创建弹框。具体通过系统默认设置创建弹框;或者根据需要自定义弹框参数,创建弹框,例如自定义弹框样式、弹框尺寸和显示位置等。然后利用弹框设置函数,用详细崩溃信息对弹框的显示内容参数进行赋值,同时还可以设置弹框内容的标题等。
S332,利用弹框显示函数显示设置了所述详细崩溃信息的弹框。
可以理解为,在上述步骤创建了弹框,并将详细崩溃信息设置为弹框的显示内容之后,利用弹窗显示函数,对经过设置的弹框进行显示,从而使详细崩溃信息得到显示。
例如,在上述实施例的基础上,本实施例使用自定义或者系统的UIAlertView函数,创建一个弹框,并使用initWithTitle函数为该弹框的内容设置标题,该弹框的显示内容设置为详细崩溃信息allMsg,然后将这个弹框使用显示函数进行显示。
在上述实施例的基础上,在所述S33的步骤之后,所述方法还包括:利用延迟运行函数使主线程延迟设定的一段时间。
可以理解为,在上述实施例将详细崩溃信息通过弹框或自定义界面显示之后,为了使观察者对显示信息进行更清楚细致的观察,通过调用延迟运行函数,及设定延迟时间,使主线程在设定延迟时间段内暂停运行,并在设定延迟时间结束之后恢复运行。
例如,在根据上述实施例的弹框弹出之后,调用sleep函数,并设置设定延迟时间,如2~10秒,使主线程在弹框显示之后延迟2~10秒之后再继续运行,方便测试者观看详细崩溃信息并进行截图保存。
本发明实施例提供的一种定位崩溃信息的方法,通过调用sleep函数,使崩溃信息的显示界面能够停留设定的一段时间,从而能够使观察者对显示信息进行更清楚细致的观察,且方便观察者对显示信息进行截屏留证,为下一步排除崩溃故障提供更直观的便利。
在上述实施例的基础上,在所述S33的步骤之后,所述方法还包括:获取并释放运行循环中的全部运行循环线程,并利用结束线程函数结束所述崩溃信息对应的运行循环线程。
可以理解为,在根据上述实例准确定位崩溃信息之后,获取运行循环中的全部运行循环线程,其中包括崩溃信息所在的运行循环线程。然后通过释放全部运行循环线程,释放其中的崩溃信息运行循环线程,并利用结束线程函数,准确结束该崩溃信息对应的运行循环线程,排除崩溃故障。
例如,通过调用获取全部运行循环线程的函数CFRunLoopCopyAllModes,获取全部运行循环线程为allModes,对运行循环线程中的全部模式allModes使用释放函数CFRelease进行释放,并使用函数kill结束当前崩溃信息对应的运行循环线程,排除崩溃故障。
本发明实施例提供的一种定位崩溃信息的方法,通过获取和释放运行循环中的运行循环线程,并利用结束线程函数结束崩溃信息对应的运行循环线程,能够实现崩溃故障的准确排除。
在上述实施例的基础上,在所述S3的步骤之后,所述方法还包括:通过将所述详细崩溃信息赋值给粘贴板的字符串,将所述详细崩溃信息复制到粘贴板。
可以理解为,为了避免详细崩溃信息显示内容过多过复杂,在进行弹框或自定义页面显示时,无法在一个面板中显示全部详细崩溃信息内容,而造成截屏信息不完整,本实施例将详细崩溃信息内容以文本形式复制到粘贴板,具体通过将详细崩溃信息内容赋值给粘贴板的字符串实现详细崩溃信息的复制。
例如,针对ISO系统,利用获取系统通用粘贴板的函数generalPasteboard,获取ISO系统的粘贴板pasteboard,并将详细崩溃信息allMsg赋值给粘贴板pasteboard的字符串,即可实现详细崩溃信息到粘贴板的复制,从而方便将完整的详细崩溃信息发送给开发人员,以供其进行针对性处理。
本发明实施例提供的一种定位崩溃信息的方法,通过将详细崩溃信息复制到粘贴板,能够有效解决详细信息内容过多而无法实现在一个界面显示,并导致截屏信息不完整的问题。
作为本发明实施例的另一个方面,本实施例提供一种定位崩溃信息的设备,参考图5,为本发明实施例一种定位崩溃信息的设备的结构框图,包括:至少一个存储器1、至少一个处理器2、通信接口3和总线4。
其中,存储器1、处理器2和通信接口3通过总线4完成相互间的通信,通信接口3用于所述定位崩溃信息的设备与崩溃信号上传设备之间的信息传输;存储器1中存储有可在处理器2上运行的计算机程序,处理器2执行所述程序时实现如上述实施例所述的定位崩溃信息的方法。
可以理解为,所述的定位崩溃信息的设备中至少包含存储器1、处理器2、通信接口3和总线4,且存储器1、处理器2和通信接口3通过总线4形成相互之间的通信连接,并可完成相互间的通信。
通信接口3实现定位崩溃信息的设备与崩溃信号上传设备之间的通信连接,并可完成相互间信息传输,如通过通信接口3实现崩溃信号的上传等。
设备运行时,处理器2调用存储器1中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:通过采用写入函数指针,利用循环函数将所述异常信息加入异常信息数组,并将所述异常信息数组存入所述给定字典。以及通过系统设置或自定义设置创建弹框,并利用弹框设置函数将所述详细崩溃信息设置为所述弹框的内容;利用弹框显示函数显示设置了所述详细崩溃信息的弹框等。
本发明另一个实施例中,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述实施例所述的定位崩溃信息的方法。
可以理解为,实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的定位崩溃信息的设备的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分所述的方法。
本发明实施例提供的一种定位崩溃信息的设备和一种非暂态计算机可读存储介质,通过采用信号处理函数解析异常信息,并基于解析获取的异常信息详情实现崩溃信息的自主定位和实时显示,能够有效简化崩溃信息的处理操作流程,缩短崩溃信息的处理时间,从而有效提高软件开发和测试的效率。
综上,本发明实施例提供的一种定位崩溃信息的方法与设备,通过信号处理函数解析异常信息,并基于解析获取的异常信息详情实现崩溃信息的自主定位和实时显示,能够有效简化崩溃信息的处理操作流程,缩短崩溃信息的处理时间,从而有效提高软件开发和测试的效率。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种定位崩溃信息的方法,其特征在于,包括:
S1,当监听到崩溃信号时,利用信号处理函数解析所述崩溃信号,获取异常信息,并将所述异常信息存入给定字典;
S2,将所述给定字典中的异常信息包装成异常信息包,并作为异常通知发出;
S3,基于所述异常通知,通过处理所述异常信息的异常原因及所述异常信息在所述给定字典中的字典信息,定位并显示所述崩溃信号对应的崩溃信息。
2.根据权利要求1所述的方法,其特征在于,所述S1的步骤进一步包括:
S11,当所述信号处理函数不存在异常时,利用字典创建函数创建所述给定字典;
S12,采用读取函数指针,循环利用异常信息解析函数,获取所述崩溃信号的崩溃堆栈数组中包含的异常信息;
S13,采用写入函数指针,利用循环函数将所述异常信息加入异常信息数组,并将所述异常信息数组存入所述给定字典。
3.根据权利要求1所述的方法,其特征在于,所述S3的步骤进一步包括:
监听所述异常通知,获取所述异常通知对应的异常信息的异常原因,以及所述异常信息在所述给定字典中的字典信息;
基于所述异常原因定位所述崩溃信息,并将所述崩溃信息的异常原因及字典信息进行拼接,获取详细崩溃信息;
通过弹框或自定义界面显示所述详细崩溃信息。
4.根据权利要求3所述的方法,其特征在于,所述通过弹框显示所述详细崩溃信息的步骤进一步包括:
通过系统设置或自定义设置创建弹框,并利用弹框设置函数将所述详细崩溃信息设置为所述弹框的内容;
利用弹框显示函数显示设置了所述详细崩溃信息的弹框。
5.根据权利要求3所述的方法,其特征在于,在所述通过弹框或自定义界面显示所述详细崩溃信息的步骤之后,还包括:
利用延迟运行函数使主线程延迟设定的一段时间。
6.根据权利要求3或5所述的方法,其特征在于,在所述通过弹框或自定义界面显示所述详细崩溃信息的步骤之后,还包括:
获取并释放运行循环中的全部运行循环线程,并利用结束线程函数结束所述崩溃信息对应的运行循环线程。
7.根据权利要求3或5所述的方法,其特征在于,在所述S3的步骤之后,还包括:
通过将所述详细崩溃信息赋值给粘贴板的字符串,将所述详细崩溃信息复制到粘贴板。
8.根据权利要求2所述的方法,其特征在于,所述信号处理函数不存在异常通过以下步骤进行获取:
判断异常信息存储个数与设定最大异常信息存储个数的大小关系,若所述异常信息存储个数小于所述设定最大异常信息存储个数,则返回所述信号处理函数不存在异常。
9.根据权利要求2所述的方法,其特征在于,在所述S12的步骤之前,还包括:
定义所述读取函数指针和堆栈数量变量,所述堆栈数量变量用于存储所述崩溃堆栈数组中的异常信息的数量。
10.一种定位崩溃信息的设备,其特征在于,包括:至少一个存储器、至少一个处理器、通信接口和总线;
所述存储器、所述处理器和所述通信接口通过所述总线完成相互间的通信,所述通信接口用于所述定位崩溃信息的设备与崩溃信号上传设备之间的信息传输;
所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至9中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710720045.XA CN107643980A (zh) | 2017-08-21 | 2017-08-21 | 一种定位崩溃信息的方法与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710720045.XA CN107643980A (zh) | 2017-08-21 | 2017-08-21 | 一种定位崩溃信息的方法与设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107643980A true CN107643980A (zh) | 2018-01-30 |
Family
ID=61110435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710720045.XA Pending CN107643980A (zh) | 2017-08-21 | 2017-08-21 | 一种定位崩溃信息的方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107643980A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925667A (zh) * | 2021-03-29 | 2021-06-08 | 北京奇艺世纪科技有限公司 | 预防sdk崩溃的方法、装置、设备及可读存储介质 |
CN114827636A (zh) * | 2021-01-18 | 2022-07-29 | 武汉斗鱼网络科技有限公司 | 一种视频播放异常的诊断方法及相关装置 |
CN116662045A (zh) * | 2022-11-18 | 2023-08-29 | 荣耀终端有限公司 | 进程名称获取方法、终端设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983209A (zh) * | 2005-12-14 | 2007-06-20 | 中兴通讯股份有限公司 | 一种软件单元测试自动化系统及其方法 |
CN104268055A (zh) * | 2014-09-01 | 2015-01-07 | 腾讯科技(深圳)有限公司 | 一种程序异常的监控方法和装置 |
CN105630682A (zh) * | 2015-12-28 | 2016-06-01 | 珠海金山网络游戏科技有限公司 | 移动终端自动收集及分析崩溃的系统和方法 |
US9626283B1 (en) * | 2013-03-06 | 2017-04-18 | Ca, Inc. | System and method for automatically assigning a defect to a responsible party |
-
2017
- 2017-08-21 CN CN201710720045.XA patent/CN107643980A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983209A (zh) * | 2005-12-14 | 2007-06-20 | 中兴通讯股份有限公司 | 一种软件单元测试自动化系统及其方法 |
US9626283B1 (en) * | 2013-03-06 | 2017-04-18 | Ca, Inc. | System and method for automatically assigning a defect to a responsible party |
CN104268055A (zh) * | 2014-09-01 | 2015-01-07 | 腾讯科技(深圳)有限公司 | 一种程序异常的监控方法和装置 |
CN105630682A (zh) * | 2015-12-28 | 2016-06-01 | 珠海金山网络游戏科技有限公司 | 移动终端自动收集及分析崩溃的系统和方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114827636A (zh) * | 2021-01-18 | 2022-07-29 | 武汉斗鱼网络科技有限公司 | 一种视频播放异常的诊断方法及相关装置 |
CN112925667A (zh) * | 2021-03-29 | 2021-06-08 | 北京奇艺世纪科技有限公司 | 预防sdk崩溃的方法、装置、设备及可读存储介质 |
CN112925667B (zh) * | 2021-03-29 | 2024-03-08 | 北京奇艺世纪科技有限公司 | 预防sdk崩溃的方法、装置、设备及可读存储介质 |
CN116662045A (zh) * | 2022-11-18 | 2023-08-29 | 荣耀终端有限公司 | 进程名称获取方法、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634728A (zh) | 作业调度方法、装置、终端设备及可读存储介质 | |
CN112181804B (zh) | 一种参数校验方法、设备以及存储介质 | |
CN107643980A (zh) | 一种定位崩溃信息的方法与设备 | |
CN108519943A (zh) | 测试控制和测试执行装置、方法及计算机存储介质 | |
CN106294094A (zh) | 游戏服务器的测试方法、客户端、服务器及系统 | |
US20210288897A1 (en) | Mitigating failure in request handling | |
CN106487603A (zh) | 一种响应测试方法及装置 | |
CN114064208A (zh) | 检测应用服务状态的方法、装置、电子设备及存储介质 | |
CN109831440A (zh) | 接口报文转换方法、装置及存储介质 | |
CN112580812A (zh) | 模型训练方法、库存安全预警方法、装置、设备及介质 | |
CN111782524A (zh) | 应用测试方法和装置、存储介质和电子装置 | |
CN107832446B (zh) | 一种配置项信息的搜索方法及计算设备 | |
CN112035314A (zh) | 内存泄漏的监控方法、装置及电子设备 | |
CN109905268A (zh) | 网络运维的方法及装置 | |
CN107679423A (zh) | 分区完整性检查方法及装置 | |
CN109634838A (zh) | 定位应用程序故障的方法、装置、存储介质和电子设备 | |
CN109067605A (zh) | 一种存储子系统故障诊断方法、装置、终端及存储介质 | |
CN111506455B (zh) | 服务发布结果的查验方法及装置 | |
CN112214373A (zh) | 硬件监控方法、装置及电子设备 | |
CN104731633B (zh) | 一种Linux系统下多分区存储设备卸载失败后回滚方法及系统 | |
CN112631949A (zh) | 一种调试方法、装置、计算机设备及存储介质 | |
CN109308256A (zh) | 一种java程序动态分析方法、设备和存储介质 | |
CN113656268B (zh) | 业务服务的性能测试方法、装置、电子设备和存储介质 | |
CN117709255B (zh) | 间接访问寄存器的测试方法、装置、设备及介质 | |
CN117472618A (zh) | 故障注入方法、装置、处理器、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180130 |