CN115934534A - 耗电异常的定位方法、装置、计算机设备和存储介质 - Google Patents
耗电异常的定位方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115934534A CN115934534A CN202211564869.XA CN202211564869A CN115934534A CN 115934534 A CN115934534 A CN 115934534A CN 202211564869 A CN202211564869 A CN 202211564869A CN 115934534 A CN115934534 A CN 115934534A
- Authority
- CN
- China
- Prior art keywords
- target
- calling
- power consumption
- module
- attention module
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请涉及一种耗电异常的定位方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;当基于目标关注模块的耗电信息确定目标关注模块耗电异常时,获取目标关注模块所调用的目标系统函数的调用参数;当基于调用参数确定目标关注模块存在异常调用情况时,确定目标关注模块异常调用的目标系统函数;根据异常调用的目标系统函数,定位目标关注模块的耗电原因。该方法,通过设置了两层定位的方式,准确快速地定位了目标关注模块的耗电原因,可以为应用程序的开发者提供应用的耗电位置参考。
Description
技术领域
本申请涉及自动程序设计技术领域,特别是涉及一种耗电异常的定位方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着社会的发展,人们和智能设备之间的关系也越来越紧密,而智能设备上一般安装有各式各样的应用程序,对于不同类型的应用程序的耗电能力不同,因此,对应用程序的耗电量的监测是有必要的。
现有的技术中,常采用离线的方式,通过外部工具对智能设备的应用程序的耗电信息进行采集,并在PC端进行分析,得到应用程序的耗电分析结果。
通过该方式获取耗电信息,仅能获取应用程序某时段的整体耗电量,无法为软件开发方提供应用程序的较全面的耗电信息参考。
发明内容
基于此,有必要针对上述技术问题,提供一种能够定位耗电异常位置的耗电异常的定位方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种耗电异常的定位方法,所述方法包括:
基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;
当基于所述目标关注模块的耗电信息确定所述目标关注模块耗电异常时,获取所述目标关注模块所调用的所述目标系统函数的调用参数;
当基于所述调用参数确定所述目标关注模块存在异常调用时,确定所述目标关注模块异常调用的所述目标系统函数;
根据所述异常调用的所述目标系统函数,定位所述目标关注模块的耗电原因。
在其中一个实施例中,所述调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;
所述方法还包括:若所述目标关注模块所调用的所述目标系统函数的所述调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,则确定所述目标关注模块存在异常调用。
在其中一个实施例中,所述方法还包括:
当基于所述调用参数确定所述目标关注模块不存在异常调用时,获取所述目标关注模块在所述应用程序的历史版本的耗电信息;
若所述目标关注模块在当前版本的耗电量与在所述应用程序的历史版本的耗电量的差值的绝对值大于预设值,则确定所述目标关注模块的业务逻辑异常。
在其中一个实施例中,所述基于应用程序的目标插桩获得目标关注模块的耗电信息,包括:
获取基于应用程序的目标插桩上报的目标关注模块的开始运行时间和结束运行时间;
根据所述开始运行时间和结束运行时间获取所述应用程序的运行时长;
基于所述运行时长与耗电量的映射关系,获得所述目标关注模块的耗电信息。
在其中一个实施例中,所述方法还包括:
当基于所述目标系统函数的调用参数确定所述目标系统函数存在异常调用时,确定异常调用所述目标系统函数的功能模块为耗电功能模块。
在其中一个实施例中,所述调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;
所述方法还包括:若所述目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭,则确定所述目标系统函数存在异常调用。
在其中一个实施例中,所述目标系统函数包括唤醒锁函数、WIFI扫描函数、网络请求函数、传感器函数和定时任务函数中的至少一种。
第二方面,本申请提供了一种耗电异常的定位装置,所述装置包括:
第一调用模块,用于基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;
第二调用模块,用于当基于所述目标关注模块的耗电信息确定所述目标关注模块耗电异常时,获取所述目标关注模块所调用的所述目标系统函数的调用参数;
判断模块,用于当基于所述调用参数确定所述目标关注模块存在异常调用时,确定所述目标关注模块异常调用的所述目标系统函数;
定位模块,用于根据所述异常调用的所述目标系统函数,定位所述目标关注模块的耗电原因。
在其中一个实施例中,所述调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;
所述模块还包括:异常调用模块,用于若所述目标关注模块所调用的所述目标系统函数的所述调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,则确定所述目标关注模块存在异常调用。
在其中一个实施例中,所述判断模块,还用于当基于所述调用参数确定所述目标关注模块不存在异常调用时,获取所述目标关注模块在所述应用程序的历史版本的耗电信息;若所述目标关注模块在当前版本的耗电量与在所述应用程序的历史版本的耗电量的差值的绝对值大于预设值,则确定所述目标关注模块的业务逻辑异常。
在其中一个实施例中,所述第一调用模块,还用于获取基于应用程序的目标插桩上报的目标关注模块的开始运行时间和结束运行时间;根据所述开始运行时间和结束运行时间获取所述应用程序的运行时长;基于所述运行时长与耗电量的映射关系,获得所述目标关注模块的耗电信息。
在其中一个实施例中,所述装置还包括:异常确定模块,用于当基于所述目标系统函数的调用参数确定所述目标系统函数存在异常调用时,确定异常调用所述目标系统函数的功能模块为耗电功能模块。
在其中一个实施例中,所述调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;所述异常确定模块,还用于若所述目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭,则确定所述目标系统函数存在异常调用。
在其中一个实施例中,所述装置包括:储存模块,用于保存唤醒锁函数、WIFI扫描函数、网络请求函数、传感器函数和定时任务函数中的至少一种。
第三方面,本申请提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;
当基于所述目标关注模块的耗电信息确定所述目标关注模块耗电异常时,获取所述目标关注模块所调用的所述目标系统函数的调用参数;
当基于所述调用参数确定所述目标关注模块存在异常调用时,确定所述目标关注模块异常调用的所述目标系统函数;
根据所述异常调用的所述目标系统函数,定位所述目标关注模块的耗电原因。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;
当基于所述目标关注模块的耗电信息确定所述目标关注模块耗电异常时,获取所述目标关注模块所调用的所述目标系统函数的调用参数;
当基于所述调用参数确定所述目标关注模块存在异常调用时,确定所述目标关注模块异常调用的所述目标系统函数;
根据所述异常调用的所述目标系统函数,定位所述目标关注模块的耗电原因。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;
当基于所述目标关注模块的耗电信息确定所述目标关注模块耗电异常时,获取所述目标关注模块所调用的所述目标系统函数的调用参数;
当基于所述调用参数确定所述目标关注模块存在异常调用时,确定所述目标关注模块异常调用的所述目标系统函数;
根据所述异常调用的所述目标系统函数,定位所述目标关注模块的耗电原因。
上述耗电异常的定位方法、装置、计算机设备、存储介质和计算机程序产品,基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数,首先,从整体上判断目标关注模块的耗电信息,对异常耗电位置进行粗略的定位,当目标关注模块的耗电信息确定目标关注模块耗电异常时,获取目标关注模块所调用的目标系统函数的调用参数,当基于调用参数确定目标关注模块存在异常调用情况时,确定目标关注模块异常调用的目标系统函数,然后,从细节上判断目标关注模块异常调用的目标系统函数,对异常耗电位置进行精确的定位。该方法,通过设置了两层定位的方式,准确快速地定位了目标关注模块的耗电原因,可以为应用程序的开发者提供应用的耗电位置参考。
附图说明
图1为一个实施例中耗电异常的定位方法的应用环境图;
图2为一个实施例中耗电异常的定位方法的流程示意图;
图3为一个实施例中目标关注模块存在异常的确定方法的示意图;
图4为一个实施例中业务逻辑的异常位置的示意图;
图5为一个实施例中耗电功能模块的示意图;
图6为一个实施例中移动客户端电量异常线上监控的方法的流程示意图;
图7为一个实施例中耗电异常的定位装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
当前社会基本人均一部智能手机,而各种各样的移动应用也是层出不穷,很多人的手机基本上会安装很多应用,如果应用关于电量的消耗上处理不到位,就会导致大量消耗电量,触发系统的报警,部分机型的手机就会弹出通知提示用户某某应用正在大量消耗电量。如果不符合用户使用预期,应用可能会被用户终止运行或加入限制后台运行的名单内。
目前在有运行的App的移动设备或其他终端上,使用系统命令dumpsysbatterystats可以导出改App电量的详细使用数据进行分析。具体地,电量损耗的分析方法包括:
步骤1、将安装有App的移动设备连接PC端;步骤2、PC运行CMD命令行工具,运行ADB工具打开移动终端的控制台;步骤3、运行系统命令dumpsys batterystats统计一段时间内的App电量的损耗概况。
该方式,一方面,对移动设备的App的电量损耗概况检测不够方便,无法确定某个应用中那个功能模块的耗电量多,仅可以查看系统设置中某个应用的整体耗电情况,不能具体定位到应用内部模块的耗电情况,应用程序的开发者也就无法针对性的对应用进行电量损耗方向的优化。另一方面,通过使用系统命令dumpsys batterystats导出App电量的详细使用数据进行分析,需要使用工具链接到终端设备进行数据采集,采集的到的数据可读性差,需要使用PC进行读取分析,PC中的电量损耗的分析过程一般为离线进行,实时性较差,限制了App电量优化监控方案的拓展性。
因此,当下移动端开发者对App进行性能优化时,缺乏可靠稳定的线上电量监控系统,无法进行有效可靠的电量监控,无法快速定位出电量损耗异常位置。
有鉴于此,本申请实施例提供的耗电异常的定位方法,可以应用于如图1所示的应用环境中。其中,测试终端102通过网络与监控平台104进行通信。数据存储系统可以存储监控平台104需要处理的数据。数据存储系统可以集成在监控平台104上,也可以放在云上或其他网络服务器上。
监控平台104基于测试终端102的应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;当监控平台104基于目标关注模块的耗电信息确定目标关注模块耗电异常时,获取目标关注模块所调用的目标系统函数的调用参数;当监控平台104基于调用参数确定目标关注模块存在异常调用时,确定目标关注模块异常调用的目标系统函数;监控平台104根据异常调用的目标系统函数,定位目标关注模块的耗电原因。
其中,测试终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。监控平台104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种耗电异常的定位方法,以该方法应用于图1中的监控平台为例进行说明,包括以下步骤:
S202,基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数。
其中,插桩为程序插桩,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。
具体地,对应用程序的目标插桩代表对应用程序的插桩点进行插桩,包括:对应用程序代码起始段、代码终止段、代码的关键参数段等代码字段进行插桩。比如,对关注模块或系统函数的相应代码字段进行插桩,得到应用程序的目标插桩结果。
其中,插桩的具体方式可以根据代码的编译语言的不同而选择不同插桩方式,比如,对于C语言编译的代码,使用Native插桩;对于java语言编译的代码,使用java hook钩子函数进行插桩。
其中,钩子函数又称Hook技术,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。
具体地,使用java hook钩子函数进行插桩的方法,包括:对于关注模块的代码起始段、代码终止端、关联代码引用段等进行插桩,其中,关联代码引用段指在不同关注模块之间的代码相互引用的代码。
其中,关注模块可以是应用程序中耗电量较多的模块,或者是应用程序中频繁调用的模块,具体地,关注模块可以包括:视频播放模块、定位模块、地图导航模块等。其中,关注模块的耗电信息可以是关注模块在预设时间段内的耗电量,耗电量的值可以用耗电单位表示,例如,在最近1小时内,视频播放模块的耗电信息为10个耗电单位。需说明的,关注模块的使用时长和耗电量一般为线性关系,可以通过获取关注模块的使用时长,将使用时长换算成耗电量,得到目标关注模块的耗电信息。
其中,目标系统函数可以是应用程序中执行特定动作函数,比如,唤醒锁WakeLock、无线扫描WiFi scans、网络请求Network、传感器Sensor(定位、NFC等)、定时任务Alarm等耗时的系统函数,系统函数响应与用户的控制指令,通过调用预先配置好的硬件,比如,GPS模块、NFC模块、传感器模块等硬件模块,完成相应控制指令。目标系统函数可以是目标关注模块内的系统函数也可以是目标关注模块外的应用程序内的其他系统函数。
其中,响应于用户控制指令,目标系统函数通过调用预先配置好的硬件完成相应控制指令,实现用户控制指令的预期功能的同时还得到调用参数,调用参数可以包括目标系统函数的调用次数、调用时长、调用停止标识、调用标识等。
需说明的,调用参数可以表示多个关注模块包含的目标系统函数的整体的调用情况。比如,对于关注模块A、关注模块B和关注模块C而言,三个关注模块均包含定位系统函数,若在某时间段内,只有关注模块A调用了定位系统函数,则调用参数的调用标识为“关注模块A”。以此,通过判断目标系统函数的调用参数的调用标识,得到调用该目标系统函数的目标关注模块(关注模块A)。
S204,当基于目标关注模块的耗电信息确定目标关注模块耗电异常时,获取目标关注模块所调用的目标系统函数的调用参数。
其中,目标关注模块的耗电信息包括目标关注模块的使用时段、目标关注模块的耗电量等,目标关注模块的耗电量可以用耗电单位表示。
具体地,当在目标关注模块使用时段内,目标关注模块的耗电量的平均值大于历史时段内目标关注模块的耗电量的平均值,则代表目标关注模块的耗电异常。需说明的,对于同一目标关注模块一般存在不同软件打包版本,比如,当前的目标关注模块的使用时段为当前软件打包版本,历史目标关注模块的使用时段为历史软件打包版本。
其中,调用参数可以表示对于单个目标关注模块内的单个目标系统函数的调用情况。比如,对于目标关注模块A而言,若确定该模块耗电异常,则,获取目标系统函数的调用参数。调用参数可以包括目标系统函数的调用次数、调用时长、调用是否正常关闭等。
S206,当基于调用参数确定目标关注模块存在异常调用时,确定目标关注模块异常调用的目标系统函数。
其中,可以根据调用参数中的目标函数的调用次数、调用时长、调用功是否正常关闭等判断是否存在异常调用情况。
具体地,若存在异常调用情况,确定目标关注模块异常调用的目标系统函数。
若不存在异常调用情况,则代表异常耗电情况可能来自于目标关注模块的除目标系统函数的其他代码部分,可以理解的,导致异常耗电情况的原因可以使其他代码的逻辑实现有异常,比如,其他代码为定位模块传感器涉及的函数LocationManager,因为该函数调用时间过长,且无法正常关闭,导致异常耗电情况,逻辑实现异常可以是LocationManager在编写代码时遗漏LocationManager.close等代码字段。
S208,根据异常调用的目标系统函数,定位目标关注模块的耗电原因。
具体地,可以根据异常调用的目标系统函数的插桩的位置,定位目标关注模块的耗电位置,得到目标关注模块的耗电位置后,根据对目标系统函数的插桩的代码起始段、代码终止段、代码的关键参数段等代码字段的研判结果,得到目标关注模块的耗电原因。
其中,耗电原因可以是代码段缺失结束步骤,比如,在登录模块中,登录需要上送用户定位,正常流程只需要开启定位,持续1~2定位完成拿到经纬度后,就关闭定位。若目标系统函数在登录模块中缺失结束定位的代码,在登录模块开启定位后,目标系统函数持续在执行定位获取的步骤,即,出现耗电异常的情况。
上述耗电异常的定位方法中,基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数,首先,从整体上判断目标关注模块的耗电信息,对异常耗电位置进行粗略的定位,当目标关注模块的耗电信息确定目标关注模块耗电异常时,获取目标关注模块所调用的目标系统函数的调用参数,当基于调用参数确定目标关注模块存在异常调用情况时,确定目标关注模块异常调用的目标系统函数,然后,从细节上判断目标关注模块异常调用的目标系统函数,对异常耗电位置进行精确的定位。该方法,通过设置了两层定位的方式,准确快速地定位了目标关注模块的耗电原因,可以为应用程序的开发者提供应用的耗电位置参考。
在一个实施例中,调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;如图3所示的目标关注模块存在异常的确定方法,包括:若目标关注模块所调用的目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,则确定目标关注模块存在异常调用。
其中,调用参数的调用时长指目标系统函数的使用时长,调用参数的调用次数指目标系统函数的调用次数,调用参数的调用是否正常关闭值目标系统函数是否包含调用停止标识。
具体地,当目标关注模块所调用的目标系统函数的调用时长大于预设时长时,代表目标系统函数内部存在逻辑缺陷,当目标关注模块的调用次数大于预设调用次数时,代表目标系统函数的头尾或引用部分存在逻辑缺陷,当目标关注模块的目标系统函数的调用未正常关闭时,代表目标系统函数的缺失结束标识,这三种情况下,均代表目标关注模块存在异常调用情况。
其中,当目标关注模块所调用的目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,确定目标关注模块存在异常调用情况。
需要说明的,当目标系统函数的调用次数过多时可能是目标系统函数没有包含调用停止标识,也可能是目标函数包含停止标识,但是目标系统函数的引用标识设置错误,导致目标系统函数被频繁调用。
本实施例中,通过对目标关注模块所调用的目标系统函数的调用时长,调用次数和调用是否正常关闭进行判断,能够判断目标关注模块是否存在异常调用,为后续对异常的位置的进一步定位提供依据。
在一个实施例中,当基于调用参数确定目标关注模块不存在异常调用情况时,获取目标关注模块在应用程序的历史版本的耗电信息;若目标关注模块在当前版本的耗电量与在应用程序的历史版本的耗电量的差值的绝对值大于预设值,则确定目标关注模块的业务逻辑异常。
其中,如图4所示的业务逻辑的异常位置的示意图,在当前版本的应用程序中,当基于调用参数确定目标关注模块不存在异常调用情况时,代表异常位置在目标关注模块下的其他系统函数或其他部分所处的位置,即,A部分。
需说明的,目标关注模块的其他函数代表目标关注模块内的系统函数(除目标系统函数外),其他部分代表目标关注模块内的除系统函数外的其他代码部分。
具体地,如图4所示,在当前版本的应用程序中,当基于调用参数确定目标关注模块不存在异常调用情况时,获取历史版本的应用程序下的目标关注模块的耗电信息,即,目标关注模块的耗电量,若目标关注模块在当前版本的耗电量与在应用程序的历史版本的耗电量的差值的绝对值大于预设值时,确定目标关注模块的业务逻辑异常。
其中,可以将目标关注模块的使用时长换算成目标关注模块的耗电量,一般情况下,目标关注模块的使用时长和目标关注模块的耗电量多少成线性关系。
本实施例中,通过对当前版本的目标关注模块和历史版本的目标关注模块的耗电量进行比较,能够准确定位出目标关注模块的业务逻辑异常。
在一个实施例中,基于应用程序的目标插桩获得目标关注模块的耗电信息,包括:获取基于应用程序的目标插桩上报的目标关注模块的开始运行时间和结束运行时间;根据开始运行时间和结束运行时间获取应用程序的运行时长;基于运行时长与耗电量的映射关系,获得目标关注模块的耗电信息。
其中,目标关注模块包括:视频播放模块、定位模块、地图导航模块等中的一种。具体地,获取基于应用程序的目标插桩上报的视频播放模块、定位模块、地图导航模块的开始运行时间和结束运行时间,开始运行时间可以是用户发出控制指令的时刻,也可以应用程序实际开始处理用户所发出的控制指令的时刻。结束时刻与开始时刻同理,在此不做赘述。
需理解的,短时间内,用户可能多次发出开始和结束指令,若结束时刻和下一次的开始时刻之间的间隔小于预设阈值,则将该结束时刻和下一次的开始时刻重合,换言之,只要计算第一次开始时刻到第二次结束时刻的间隔时长作为运行时长。
基于运行时长与耗电量的映射关系,该映射关系和电池所处的环境温度相关,在常见温度区间下,设置多个运行时长和耗电量的映射关系,以此,获得更准确的目标关注模块的耗电信息。
本实施例中,通过对目标关注模块的开始运行时间、结束运行时间,以及运行时长与耗电量的映射关系,得到目标关注模块的耗电信息,能够获取得到各个关注模块的耗电量,为耗电异常位置的定位提供数据支撑。
在一些情况下,应用程序中其他耗电异常的功能模块,不一定为关注模块,因此,需要对其他耗电的功能模块进行是否耗电异常的判断,在一个实施例中,若基于目标系统函数的调用参数确定目标系统函数存在异常调用,则确定异常调用目标系统函数的功能模块为耗电功能模块。
其中,当基于目标系统函数的调用参数确定目标系统函数存在异常调用时,代表该目标系统函数内部出现逻辑缺陷,因此,引用该目标系统函数的关注模块可以确定为耗电功能模块。
具体地,如图5所示的耗电功能模块的示意图,当基于目标系统函数1的调用参数确定目标系统函数1存在异常调用时,确定功能模块1、功能模块2位耗电功能模块,例如,目标系统函数1可以是定位系统函数,功能模块1可以是定位模块,功能模块2可以是地图导航模块,若定位系统函数内部出现逻辑缺陷,则可以将地图导航模块和定位模块确定为耗电功能模块,即,B部分。
本实施例中,通过对目标系统函数进行单独判断,能够准确筛选出耗电功能模块。
在一个实施例中,调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;方法还包括:若目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭,则确定目标系统函数存在异常调用。
其中,可以对目标系统函数的调用时长、调用次数、调用是否正常关闭进行判断,确定目标系统函数是否存在异常调用。
具体地,当目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,确定目标系统函数存在异常调用。
本实施例中,通过对其他功能模块的调用参数进行判断,确定是否存在目标系统函数的异常调用,能够对全部功能模块的目标系统函数进行异常调用的检测,扩大了异常调用的检测范围,为异常耗电位置的确定提供了数据支撑。
在一个实施例中,目标系统函数包括唤醒锁函数、WIFI扫描函数、网络请求函数、传感器函数和定时任务函数中的至少一种。
其中,目标系统函数可以是应用程序中执行特定动作函数,比如,唤醒锁函数WakeLock、WIFI扫描函数WiFi scans、网络请求函数Network、传感器函数Sensor(定位、NFC等)、定时任务函数Alarm等耗时的系统函数,系统函数响应与用户的控制指令,通过调用预先配置好的硬件,比如,GPS模块、NFC模块、传感器模块等硬件模块,完成相应控制指令。目标系统函数可以是目标关注模块内的系统函数也可以是目标关注模块外的应用程序内的其他系统函数。
本实施例中,通过对系统常用函数进行插桩,可以对大部分模块的异常耗电情况进行监控。
在一个实施例中,如图6所示,提供了一种移动客户端电量异常线上监控的方法,包括:
S602,启动打包程序。
S604,Jenkins自动拉取Git仓库代码数据执行自动化构建。
其中,首先系统利用jenkins自动化构建工具对git线上代码进行打包自动化构建。先同步拉取Git上最新的代码至本地准备打包构建。
其中,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins功能包括:持续的软件版本发布/测试项目,监控外部调用执行的工作。
S606,获取基于应用程序的目标插桩上报的目标关注模块的开始运行时间和结束运行时间。
S608,根据开始运行时间和结束运行时间获取应用程序的运行时长。
S610,基于运行时长与耗电量的映射关系,获得目标关注模块的耗电信息,以及目标系统函数的调用参数。
其中,当基于目标系统函数的调用参数确定目标系统函数存在异常调用时,确定异常调用目标系统函数的功能模块为耗电功能模块。
具体地,功能模块可以是App具体的各个功能模块,比如登录、拍照、刷脸、出行打车等。比如出行打车模块需要开启用户定位,需要调用到传感器Sensor(定位)等系统函数。
其中,调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;当目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,确定目标系统函数存在异常调用。
其中,目标系统函数包括唤醒锁函数、WIFI扫描函数、网络请求函数、传感器函数和定时任务函数。
S612,若基于目标关注模块的耗电信息确定目标关注模块耗电异常,则获取目标关注模块所调用的目标系统函数的调用参数。
其中,调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种,当目标关注模块所调用的目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,确定目标关注模块存在异常调用情况。
S614,若基于调用参数确定目标关注模块存在异常调用,则确定目标关注模块异常调用的目标系统函数。
其中,当基于调用参数确定目标关注模块不存在异常调用情况时,获取目标关注模块在应用程序的历史版本的耗电信息;若目标关注模块在当前版本的耗电量与在应用程序的历史版本的耗电量的差值的绝对值大于预设值时,确定目标关注模块的业务逻辑异常。
S616,根据异常调用的目标系统函数,定位目标关注模块的耗电原因。
其中,根据目标关注模块的耗电原因生成移动客户端电量异常的检测报告。
S618,开发工程师根据报告对软件进行针对性优化。
其中,经过对客户端耗电量和耗电信息的采集之后,App将监控信息传输回线上平台,线上平台进行分析和电量损耗异常进行研判,并给出检测报告。报告会指出哪些地方可能发生不合理的软件程序逻辑实现,导致耗电量增多。
其中,软件开发工程师根据报告,对软件程序进行有针对性的优化。
本实施例中,基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数,首先,从整体上判断目标关注模块的耗电信息,对异常耗电位置进行粗略的定位,当目标关注模块的耗电信息确定目标关注模块耗电异常时,获取目标关注模块所调用的目标系统函数的调用参数,当基于调用参数确定目标关注模块存在异常调用情况时,确定目标关注模块异常调用的目标系统函数,然后,从细节上判断目标关注模块异常调用的目标系统函数,对异常耗电位置进行精确的定位。该方法,通过设置了两层定位的方式,准确快速地定位了目标关注模块的耗电原因,可以为应用程序的开发者提供应用的耗电位置参考。
本实施例还具备如下优点:
1、自动化:在软件的生产构建过程中,运行Jetkins持续构建工具,对Git仓库上的App代码进行电量监控的相关代码插桩。
2、性能损耗低:使用Java Hook技术,能够最大限度的降低对原来App的性能影响,不影响App的业务,方便测试。
3、实时上报电量监控情况,平台输出电量损耗报告,可以全面反映电量损耗异常的模块,为性能优化提供指导意见。
4、使移动应用开发者能够更加便捷地监控线上App的电量损耗情况,及时发现程序中逻辑调用有问题导致电量异常消耗的地方,并给客户端开发建议。并且方案对原有的App代码无入侵、性能低损耗,以便于及时发现问题,进行电量性能优化。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的耗电异常的定位方法的耗电异常的定位装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个耗电异常的定位装置实施例中的具体限定可以参见上文中对于耗电异常的定位方法的限定,在此不再赘述。
在一个实施例中,如图7所示,提供了一种耗电异常的定位装置,包括:第一调用模块702、第二调用模块704、判断模块706和定位模块708,其中:
第一调用模块702,用于基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;
第二调用模块704,用于当基于目标关注模块的耗电信息确定目标关注模块耗电异常时,获取目标关注模块所调用的目标系统函数的调用参数;
判断模块706,用于当基于调用参数确定目标关注模块存在异常调用时,确定目标关注模块异常调用的目标系统函数;
定位模块708,用于根据异常调用的目标系统函数,定位目标关注模块的耗电原因。
在一个实施例中,调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;装置还包括:异常调用模块,用于若目标关注模块所调用的目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,则确定目标关注模块存在异常调用。
在一个实施例中,判断模块706,还用于当基于调用参数确定目标关注模块不存在异常调用时,获取目标关注模块在应用程序的历史版本的耗电信息;若目标关注模块在当前版本的耗电量与在应用程序的历史版本的耗电量的差值的绝对值大于预设值,则确定目标关注模块的业务逻辑异常。
在一个实施例中,第一调用模块702,还用于获取基于应用程序的目标插桩上报的目标关注模块的开始运行时间和结束运行时间;根据开始运行时间和结束运行时间获取应用程序的运行时长;基于运行时长与耗电量的映射关系,获得目标关注模块的耗电信息。
在一个实施例中,装置还包括:异常确定模块,用于当基于目标系统函数的调用参数确定目标系统函数存在异常调用时,确定异常调用目标系统函数的功能模块为耗电功能模块。
在一个实施例中,调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;异常确定模块,还用于若目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭,则确定目标系统函数存在异常调用。
在一个实施例中,装置包括:储存模块,用于保存唤醒锁函数、WIFI扫描函数、网络请求函数、传感器函数和定时任务函数中的至少一种。
上述耗电异常的定位装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储目标关注模块的耗电信息数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种耗电异常的定位方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (17)
1.一种耗电异常的定位方法,其特征在于,所述方法包括:
基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;
当基于所述目标关注模块的耗电信息确定所述目标关注模块耗电异常时,获取所述目标关注模块所调用的所述目标系统函数的调用参数;
当基于所述调用参数确定所述目标关注模块存在异常调用时,确定所述目标关注模块异常调用的所述目标系统函数;
根据所述异常调用的所述目标系统函数,定位所述目标关注模块的耗电原因。
2.根据权利要求1所述的方法,其特征在于,所述调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;
所述方法还包括:若所述目标关注模块所调用的所述目标系统函数的所述调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,则确定所述目标关注模块存在异常调用。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当基于所述调用参数确定所述目标关注模块不存在异常调用时,获取所述目标关注模块在所述应用程序的历史版本的耗电信息;
若所述目标关注模块在当前版本的耗电量与在所述应用程序的历史版本的耗电量的差值的绝对值大于预设值,则确定所述目标关注模块的业务逻辑异常。
4.根据权利要求1所述的方法,其特征在于,所述基于应用程序的目标插桩获得目标关注模块的耗电信息,包括:
获取基于应用程序的目标插桩上报的目标关注模块的开始运行时间和结束运行时间;
根据所述开始运行时间和结束运行时间获取所述应用程序的运行时长;
基于所述运行时长与耗电量的映射关系,获得所述目标关注模块的耗电信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当基于所述目标系统函数的调用参数确定所述目标系统函数存在异常调用时,确定异常调用所述目标系统函数的功能模块为耗电功能模块。
6.根据权利要求5所述的方法,其特征在于,所述调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;
所述方法还包括:若所述目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭,则确定所述目标系统函数存在异常调用。
7.根据权利要求1所述的方法,其特征在于,所述目标系统函数包括唤醒锁函数、WIFI扫描函数、网络请求函数、传感器函数和定时任务函数中的至少一种。
8.一种耗电异常的定位装置,其特征在于,所述装置包括:
第一调用模块,用于基于应用程序的目标插桩获得目标关注模块的耗电信息,以及目标系统函数的调用参数;
第二调用模块,用于当基于所述目标关注模块的耗电信息确定所述目标关注模块耗电异常时,获取所述目标关注模块所调用的所述目标系统函数的调用参数;
判断模块,用于当基于所述调用参数确定所述目标关注模块存在异常调用时,确定所述目标关注模块异常调用的所述目标系统函数;
定位模块,用于根据所述异常调用的所述目标系统函数,定位所述目标关注模块的耗电原因。
9.根据权利要求8所述的装置,其特征在于,所述调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;
所述模块还包括:异常调用模块,用于若所述目标关注模块所调用的所述目标系统函数的所述调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭时,则确定所述目标关注模块存在异常调用。
10.根据权利要求8所述的装置,其特征在于,所述判断模块,还用于当基于所述调用参数确定所述目标关注模块不存在异常调用时,获取所述目标关注模块在所述应用程序的历史版本的耗电信息;若所述目标关注模块在当前版本的耗电量与在所述应用程序的历史版本的耗电量的差值的绝对值大于预设值,则确定所述目标关注模块的业务逻辑异常。
11.根据权利要求8所述的装置,其特征在于,所述第一调用模块,还用于获取基于应用程序的目标插桩上报的目标关注模块的开始运行时间和结束运行时间;根据所述开始运行时间和结束运行时间获取所述应用程序的运行时长;基于所述运行时长与耗电量的映射关系,获得所述目标关注模块的耗电信息。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:异常确定模块,用于当基于所述目标系统函数的调用参数确定所述目标系统函数存在异常调用时,确定异常调用所述目标系统函数的功能模块为耗电功能模块。
13.根据权利要求12所述的装置,其特征在于,所述调用参数包括调用时长、调用次数或调用是否正常关闭中的至少一种;所述异常确定模块,还用于若所述目标系统函数的调用时长大于预设时长,调用次数大于预设调用次数或调用未正常关闭,则确定所述目标系统函数存在异常调用。
14.根据权利要求8所述的装置,其特征在于,所述装置包括:储存模块,用于保存唤醒锁函数、WIFI扫描函数、网络请求函数、传感器函数和定时任务函数中的至少一种。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
17.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211564869.XA CN115934534A (zh) | 2022-12-07 | 2022-12-07 | 耗电异常的定位方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211564869.XA CN115934534A (zh) | 2022-12-07 | 2022-12-07 | 耗电异常的定位方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934534A true CN115934534A (zh) | 2023-04-07 |
Family
ID=86700239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211564869.XA Pending CN115934534A (zh) | 2022-12-07 | 2022-12-07 | 耗电异常的定位方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934534A (zh) |
-
2022
- 2022-12-07 CN CN202211564869.XA patent/CN115934534A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111835582B (zh) | 物联网巡检设备的配置方法、装置、计算机设备 | |
CN110868241B (zh) | 基于多模型的地下电缆故障预警方法和装置 | |
US20150097671A1 (en) | Methods and systems for a universal wireless platform for asset monitoring | |
JP2019101495A (ja) | 診断装置、診断方法、プログラム、および記録媒体 | |
CN113593071A (zh) | 巡检方法、装置、系统、计算机设备及存储介质 | |
CN110727572A (zh) | 埋点数据处理方法、装置、设备及存储介质 | |
US10437203B2 (en) | Methods and systems for dynamic workflow prioritization and tasking | |
CN110866634A (zh) | 基于模型选择的地下电缆故障预警方法和装置 | |
CN108399125B (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN114398354A (zh) | 数据监测方法、装置、电子设备及存储介质 | |
CN110347565B (zh) | 一种应用程序的异常分析方法及装置、电子设备 | |
CN113254153B (zh) | 流程任务处理方法、装置、计算机设备和存储介质 | |
CN109814517A (zh) | 风机运行参数的处理方法和系统与计算机可读存储介质 | |
CN111177488B (zh) | 计量设备检修处理方法、装置、计算机设备和存储介质 | |
US11422916B2 (en) | Usage amount monitoring method and monitoring unit of electronic control unit for vehicle | |
CN112328602A (zh) | 一种数据写入Kafka的方法、装置及设备 | |
CN110490132B (zh) | 数据处理方法和装置 | |
CN115934534A (zh) | 耗电异常的定位方法、装置、计算机设备和存储介质 | |
CN114896168B (zh) | 用于自动驾驶算法开发的快速调试系统、方法以及存储器 | |
CN111141981B (zh) | 线损点检方法、装置、计算机设备和存储介质 | |
CN113918384A (zh) | 数据保存方法、装置、设备及存储介质 | |
Khokhlov et al. | Data security and quality evaluation framework: Implementation empirical study on android devices | |
CN113672507A (zh) | 软件源代码检测方法、装置、计算机设备和存储介质 | |
CN114185798A (zh) | 接口测试用例检测方法、装置、计算机设备和存储介质 | |
CN112946562A (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 |