一种程序稳定性检测方法及装置制造方法及图纸

技术编号:26418145 阅读:43 留言:0更新日期:2020-11-20 14:13
本发明专利技术实施例提供了一种程序稳定性检测方法和装置,所述方法包括:在运行预设程序对象调用预设方法的程序代码时,调用预设消息转发方法添加线程检测方法;通过所述线程检测方法,检测运行所述预设程序对象调用预设方法的程序代码的线程的类型;根据所述线程的类型,判断所述预设程序对象调用预设方法的程序代码是否存在预设问题;若预设程序对象调用预设方法的程序代码存在预设问题,则执行针对所述预设问题的反馈操作,从而提醒开发者进行处理。本发明专利技术实施例利用runtime机制植入线程检测方法,实现对原应用程序的极低侵入性同时高效完成检测任务。

【技术实现步骤摘要】
一种程序稳定性检测方法及装置
本专利技术涉及计算机
,特别是涉及一种程序稳定性检测方法和一种程序稳定性检测装置。
技术介绍
随着移动互联网的普及,移动应用在生活中发挥越来越大的作用,移动应用提供商在不断扩展业务,提供更丰富的功能的同时也越来越注重应用程序App的性能以保证用户体验。衡量App性能的指标有很多,例如App启动耗时、渲染帧率、内存消耗、电量消耗、App崩溃率等等。从正在运行中的App检测出各项的详细数据是提升移动应用性能的第一步,现今存在很多性能检测工具,但是这些检测工作都具备重量重,对App侵入性严重以及低灵活性等特点。开发者在性能检测和优化上消耗的成本过重,同时面临第三方框架的严重入侵导致的性能不升反降的结果,同时大多数性能测试工具都需要支付费用,会加重企业技术团队的产品优化成本。
技术实现思路
本专利技术实施例的目的在于提供一种程序稳定性检测方法,以实现低侵入性地对应用程序进行检测。具体技术方案如下:在本专利技术实施的第一方面,首先提供了一种程序稳定性检测方法,包括:在运行预设程序对象调用预设方法的程序代码时,调用预设消息转发方法添加线程检测方法;通过所述线程检测方法,检测运行所述预设程序对象调用预设方法的程序代码的线程的类型;根据所述线程的类型,判断所述预设程序对象调用预设方法的程序代码是否存在预设问题;若预设程序对象调用预设方法的程序代码存在预设问题,则执行针对所述预设问题的反馈操作。可选地,所述执行针对所述预设问题的反馈操作,包括:中断运行所述预设程序对象调用预设方法的程序代码的线程,和/或,生成并展示提醒信息。可选地,所述执行针对所述预设问题的反馈操作,包括:获取当前线程;保存所述当前线程对应的堆栈,以及获取异常时间戳和所述预设程序对象调用预设方法的程序代码所属的程序模块;生成日志数据,并将所述日志数据上传至服务器;所述日志数据包括所述当前线程对应的堆栈、所述异常时间戳和所述调用预设方法的程序代码所属的程序模块。可选地,所述预设程序对象调用预设方法的程序代码为界面元素调用渲染方法的程序代码,所述根据所述线程的类型,判断所述预设程序对象调用预设方法的程序代码是否存在预设问题,包括:判断运行所述界面元素调用渲染方法的程序代码的线程的类型是否为子线程;若运行所述界面元素调用渲染方法的程序代码的线程的类型为子线程,则确定所述界面元素调用渲染方法的程序代码存在预设问题。在本专利技术实施的第一方面,提供了一种程序稳定性检测装置,包括:方法添加模块,用于在运行预设程序对象调用预设方法的程序代码时,调用预设消息转发方法添加线程检测方法;线程检测模块,用于通过所述线程检测方法,检测运行所述预设程序对象调用预设方法的程序代码的线程的类型;问题判断模块,用于根据所述线程的类型,判断所述预设程序对象调用预设方法的程序代码是否存在预设问题;反馈模块,用于若预设程序对象调用预设方法的程序代码存在预设问题,则执行针对所述预设问题的反馈操作。可选地,所述反馈模块包括:提醒子模块,用于中断运行所述预设程序对象调用预设方法的程序代码的线程,和/或,生成并展示提醒信息。可选地,所述反馈模块包括:线程获取子模块,用于获取当前线程;保存子模块,用于保存所述当前线程对应的堆栈,以及获取异常时间戳和所述预设程序对象调用预设方法的程序代码所属的程序模块;日志数据上传子模块,用于生成日志数据,并将所述日志数据上传至服务器;所述日志数据包括所述当前线程对应的堆栈、所述异常时间戳和所述调用预设方法的程序代码所属的程序模块。可选地,所述预设程序对象调用预设方法的程序代码为界面元素调用渲染方法的程序代码,所述问题判断模块包括:子线程判断子模块,用于判断运行所述界面元素调用渲染方法的程序代码的线程的类型是否为子线程;问题确定子模块,用于若运行所述界面元素调用渲染方法的程序代码的线程的类型为子线程,则确定所述界面元素调用渲染方法的程序代码存在预设问题。在本专利技术实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的程序稳定性检测方法。在本专利技术实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的程序稳定性检测方法。本专利技术实施例中,利用runtime机制,在运行调用预设方法的程序代码时,调用预设消息转发方法添加线程检测方法;通过线程检测方法检测运行调用预设方法的程序代码的线程的类型,根据线程的类型,判断调用预设方法的程序代码是否存在预设问题;若预设程序对象调用预设方法的程序代码存在预设问题,则执行针对预设问题的反馈操作。本专利技术实施例利用runtime机制植入线程检测方法,实现对原应用程序的极低侵入性同时高效完成检测任务。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为本专利技术的一种程序稳定性检测方法实施例一的步骤流程图;图2为对象调用方法的流程图;图3为本专利技术的一种程序稳定性检测方法实施例二的步骤流程图;图4为本专利技术的一种程序稳定性检测装置实施例的结构框图;图5为本专利技术实施例中的一种电子设备的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行描述。对于iOS应用程序,应用程序的界面渲染均在主线程执行,这也是iOS应用程序使用相对流畅的重要因素,如果开发者在子线程中对界面元素进行了任何操作,则会引起程序的卡顿、性能下降甚至Crash(程序闪退、崩溃)。iOS应用程序是以Objective-C编程语言编写的应用程序,Objective-C的是一个面向运行时的语言,它可以在运行时决定实现逻辑而不是在编译期。开发者可以根据需要将消息重定向到适当的对象,甚至交换方法实现等。例如:[objectfoo](这是一句代码)语法并不会立即执行foo这个方法的代码。它是在运行时给object发送一条叫foo的消息。这个消息也许会由object来处理,也许会被转发给另一个对象,或者不予理睬假装没收到这个消息。多条不同的消息也可以对应同一个方法实现。这些都是在程序运行的时候决定的,行业术语称之为runtime。本专利技术实施例的核心构思之一在于,利用runtime机制,实现程序代码的运行时方法替换,对需要覆盖检测的方法进行消息转发操作,植入检测代码,检测其中是否存在有风险的操作。参照图1,示出了本专利技术的一种程序稳定性检测方法实施例一的步骤流程图,具体可以包括如下步骤:步骤101,在运行预设程序对象调用预设方法的程序代码时,调用预设消息转发方法添加线程检测方法。在iOS系统中,程序对象本文档来自技高网...

【技术保护点】
1.一种程序稳定性检测方法,其特征在于,包括:/n在运行预设程序对象调用预设方法的程序代码时,调用预设消息转发方法添加线程检测方法;/n通过所述线程检测方法,检测运行所述预设程序对象调用预设方法的程序代码的线程的类型;/n根据所述线程的类型,判断所述预设程序对象调用预设方法的程序代码是否存在预设问题;/n若预设程序对象调用预设方法的程序代码存在预设问题,则执行针对所述预设问题的反馈操作。/n

【技术特征摘要】
1.一种程序稳定性检测方法,其特征在于,包括:
在运行预设程序对象调用预设方法的程序代码时,调用预设消息转发方法添加线程检测方法;
通过所述线程检测方法,检测运行所述预设程序对象调用预设方法的程序代码的线程的类型;
根据所述线程的类型,判断所述预设程序对象调用预设方法的程序代码是否存在预设问题;
若预设程序对象调用预设方法的程序代码存在预设问题,则执行针对所述预设问题的反馈操作。


2.根据权利要求1所述的方法,其特征在于,所述执行针对所述预设问题的反馈操作,包括:
中断运行所述预设程序对象调用预设方法的程序代码的线程,和/或,生成并展示提醒信息。


3.根据权利要求1所述的方法,其特征在于,所述执行针对所述预设问题的反馈操作,包括:
获取当前线程;
保存所述当前线程对应的堆栈,以及获取异常时间戳和所述预设程序对象调用预设方法的程序代码所属的程序模块;
生成日志数据,并将所述日志数据上传至服务器;所述日志数据包括所述当前线程对应的堆栈、所述异常时间戳和所述调用预设方法的程序代码所属的程序模块。


4.根据权利要求2或3所述的方法,其特征在于,所述预设程序对象调用预设方法的程序代码为界面元素调用渲染方法的程序代码,所述根据所述线程的类型,判断所述预设程序对象调用预设方法的程序代码是否存在预设问题,包括:
判断运行所述界面元素调用渲染方法的程序代码的线程的类型是否为子线程;
若运行所述界面元素调用渲染方法的程序代码的线程的类型为子线程,则确定所述界面元素调用渲染方法的程序代码存在预设问题。


5.一种程序稳定性检测装置,其特征在于,包括:
方法添加模块,用于在运行预设程序对象调用预设方法的程序代码时,调用预设消息转发方法添加线程检测方法;
线程检测模块,用于通过所述线程检测方法,检测运行所述预设程序对象调用预设...

【专利技术属性】
技术研发人员:鞠鑫
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:北京;11

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

1