CN108197000B - 应用程序启动日志保存方法、存储介质、电子设备及系统 - Google Patents

应用程序启动日志保存方法、存储介质、电子设备及系统 Download PDF

Info

Publication number
CN108197000B
CN108197000B CN201810023298.6A CN201810023298A CN108197000B CN 108197000 B CN108197000 B CN 108197000B CN 201810023298 A CN201810023298 A CN 201810023298A CN 108197000 B CN108197000 B CN 108197000B
Authority
CN
China
Prior art keywords
application program
command
calling
running state
application
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.)
Active
Application number
CN201810023298.6A
Other languages
English (en)
Other versions
CN108197000A (zh
Inventor
张磊
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810023298.6A priority Critical patent/CN108197000B/zh
Priority to PCT/CN2018/081313 priority patent/WO2019136852A1/zh
Publication of CN108197000A publication Critical patent/CN108197000A/zh
Application granted granted Critical
Publication of CN108197000B publication Critical patent/CN108197000B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种应用程序启动日志保存方法、存储介质、电子设备及系统,涉及安卓系统应用技术领域,本发明调用sdk工具的am命令启动应用程序,调用linux系统的kill命令退出应用程序,有效的实现应用程序自动重启;调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件,实现自动化的完成日志保存工作,提高效率并降低人力成本的开销。

Description

应用程序启动日志保存方法、存储介质、电子设备及系统
技术领域
本发明涉及安卓系统应用技术领域,具体涉及一种应用程序启动日志保存方法、存储介质、电子设备及系统。
背景技术
在安卓系统的开发过程可能会出现一些概率性的问题,比如在客户端的开发过程中应用程序在启动的时候出现了概率性的崩溃情况,通过日志很难迅速定位问题点。为了重现该问题需要测试人员进行多次的打开应用然后完全退出应用,再打开再退出的过程,上述过程需要测试非常多的次数才能复现一次概率性的问题。传统的这种通过人工手动点击图标和手动关闭应用的方法来进行测试是一种效率低且非常耗费人力成本的方法,并且一旦问题出现的时候需要立即去手动获取日志信息,若获取日志速度过慢可能出现日志信息被覆盖掉、无法定位等相关问题了。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种应用程序启动日志保存方法、存储介质、电子设备及系统,有效的实现应用程序自动重启并且进行自动化的完成日志保存工作,提高效率并降低人力成本的开销。
为达到以上目的,本发明采取的技术方案是:一种应用程序启动日志保存方法:
调用sdk工具的am命令和linux系统的kill命令重复启动并退出待测的应用程序,调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件。
在上述技术方案的基础上,调用sdk工具的am命令和linux系统的kill命令重复启动并退出待测的应用程序包括:
检测当前系统中待测的应用程序的运行状态,所述运行状态为未启动时,调用sdk工具的am命令启动应用程序;所述运行状态为已启动时,调用linux系统的kill命令退出所述应用程序。
在上述技术方案的基础上,检测当前系统中应用程序的运行状态包括:
调用linux系统的top命令获取当前系统中正在运行的应用程序列表;
判断待测的应用程序的名称是否在所述应用程序列表中;
若存在,应用程序的运行状态为已启动;若不存在,应用程序的运行状态为未启动。
在上述技术方案的基础上,使用重定向操作符>>将应用程序的日志信息以追加形式写入本地的文本文件中。
本发明还公开了一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现应用程序启动日志保存方法。
本发明还公开了一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现应用程序启动日志保存方法。
本发明还公开了一种应用程序启动日志保存系统,包括:
应用重启模块,其用于调用sdk工具的am命令和linux系统的kill命令重复启动并退出待测的应用程序;
日志保存模块,其用于调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件。
在上述技术方案的基础上,所述应用重启模块用于:
检测当前系统中待测的应用程序的运行状态,所述运行状态为未启动时,调用sdk工具的am命令启动应用程序;所述运行状态为已启动时,调用linux系统的kill命令退出所述应用程序。
在上述技术方案的基础上,所述应用重启模块检测当前系统中待测的应用程序的运行状态包括:
调用linux系统的top命令获取当前系统中正在运行的应用程序列表;
判断待测的应用程序的名称是否在所述应用程序列表中;
若存在,应用程序的运行状态为已启动;若不存在,应用程序的运行状态为未启动
在上述技术方案的基础上,所述日志保存模块用于使用重定向操作符>>将应用程序的日志信息以追加形式写入本地的文本文件中。
与现有技术相比,本发明的优点在于:
本发明调用sdk工具的am命令启动应用程序,调用linux系统的kill命令退出应用程序,有效的实现应用程序自动重启;调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件,实现自动化的完成日志保存工作,提高效率并降低人力成本的开销。
附图说明
图1为本发明实施例中应用程序启动日志保存系统的结构示意图;
图2为本发明实施例中电子设备的结构框图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
本发明实施例提供一种应用程序启动日志保存方法:
检测当前系统中待测的应用程序的运行状态,所述运行状态为未启动时,调用sdk工具的am命令启动应用程序;所述运行状态为已启动时,调用linux系统的kill命令退出所述应用程序;
调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件。
本发明调用sdk工具的am命令启动应用程序,调用linux系统的kill命令退出应用程序,有效的实现应用程序自动重启;调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件,实现自动化的完成日志保存工作,提高效率并降低人力成本的开销。
检测当前系统中应用程序的运行状态实现方法为:
调用linux系统的top命令获取当前系统中正在运行的应用程序列表;
判断待测的应用程序的名称是否在所述应用程序列表中;
若存在,应用程序的运行状态为已启动;若不存在,应用程序的运行状态为未启动。
因为Android系统是基于Linux平台的,所以Android系统中可以使用Linux系统中的相关命令字。如所以可以借助linux系统中的相关命令来直接查看当前系统中运行的应用程序状态。
1)获取当前系统中正在运行的应用程序列表的脚本命令:
在linux系统中有一个top命令,该命令可以查看当前系统中所有正在执行的进程相关信息,在Android中一个应用程序其实就是一个进程,基于这种特点信息,获取当前系统中正在运行的应用程序列表的脚本命令为:
adb shell top>package.txt
其中:adb为android里面的调试桥接器;shell表示进入到shell执行环境下;top为显示当前的资源使用命令;>package.txt表示输出重定向到文件package.txt中。
这样就将当前系统中的所有运行的进程信息全部写入到本地文件pacakge.txt文件中,接下来对package.txt文件进行逐行读取,每次读取一行信息就是一个运行的进程。Android应用程序的进程名称是android应用程序的包名,每次读取一行的内容信息判定和应用程序的包名是否一致,如果是一致的就表示是在运行状态,如果所有的信息全部比对完成后没有一致的出现,说明运行进程中没有该应用程序,也就是说该应用程序处于没有运行的状态。将应用程序的启动状态标记为isStarted,如果isStarted为true表示已经启动了,如果为false表示没有启动。
2)启动应用程序的脚本命令
具体是通过如下的脚本方式来对应用程序来进行启动的:
Am start xxx.xxx.xxx
其中am命令是一个android sdk中的命令程序,该命令程序主要是用于调试应用的时候进行使用的,但是其中有一个功能是可以启动应用程序,am start表示启动一个应用,其中xxx.xxx.xxx表示的是需要被启动的应用程序的包名,也就是步骤一中所述的进程名称。通过借助am命令字的方式来在后台直接静默启动应用程序,从而达到了应用程序的自启动的目标。
3)退出应用程序的脚本命令
在linux系统中kill命令可以用于杀掉某一个进程,借助该命令来实现应用程序的自动退出功能。具体是通过调用kill xxx.xxx.xxx的方式来使得应用程序来进行退出,使用该命令的条件是xxx.xxx.xxx进程是存在的。只有当应用程序处于运行状态的时候才会进入到退出的逻辑,所以应用程序xxx.xxx.xxx的进程肯定是存在的。这样kill命令就能够正常的被调用并将应用程序直接从内存中清除掉,也就是退出掉,从而达到了自动退出应用程序的目的。
首先,读取isStarted信息来判定当前应用程序的执行状态,如果isStarted的值为true表示当前程序正在运行,此时通过调用kill xxx.xxx.xxx的方式来将应用程序进程杀掉。如果isStarted的值为false,此时就不能调用kill xxx.xxx.xxx命令,避免因为调用kill命令而导致的异常情况。
4)自动保存日志信息
在linux命令中有一个重定向的追加从操作符>>,该操作符表示的是将内容以追加的形式进行写入,借助该追加描述符可以将日志信息进行追加的方式写入文件,具体实现如下所示:
Logcat|grep xxx.xxx.xxx>>log.txt
其中:Logcat为输出系统中的所有日志信息命令;“|”操作符为一条管道,表示将logcat的输出作为grep命令的输入;grep命令为查询命令,xxx.xxx.xxx为应用程序的包名。
传统的日志常规保存方法通常都会是通过open函数来打开一个文件,从而获取到该文件的文件句柄,然后通过seek函数来将文件指正移动到文件的末尾,然后再此调用write函数来向文件中写入日志信息,再通过close函数来关闭文件,关闭文件释放文件句柄后调用flush函数来将内存中的所有数据全部写入到文件中,至此完成日志文件的写入过程。传统方案的实现上是比较复杂且效率低下的,也存在文件读写异常和多线程死锁等问题,如果处理不好非常容易造成程序执行异常等。本发明通过调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件,简化了日志保存方法,高效便利,且不易出现文件读写异常和多线程死锁等问题。
本发明实施例还公开了一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现应用程序启动日志保存方法。
参见图2所示,本发明实施例还公开了一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时应用程序启动日志保存方法。
参见图1所示,本发明实施例还公开了一种应用程序启动日志保存系统,包括:
应用重启模块,其用于检测当前系统中待测的应用程序的运行状态,所述运行状态为未启动时,调用sdk工具的am命令启动应用程序;所述运行状态为已启动时,调用linux系统的kill命令退出所述应用程序;
日志保存模块,其用于调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件。
所述应用重启模块检测当前系统中待测的应用程序的运行状态包括:
调用linux系统的top命令获取当前系统中正在运行的应用程序列表;
判断待测的应用程序的名称是否在所述应用程序列表中;
若存在,应用程序的运行状态为已启动;若不存在,应用程序的运行状态为未启动。
上述步骤的具体实现过程为:
应用重启模块调用linux系统的top命令获取当前系统中正在运行的应用程序列表的脚本命令为:adb shell top>package.txt,其中:adb为android里面的调试桥接器;shell表示进入到shell执行环境下;top为显示当前的资源使用情况命令;>package.txt表示输出重定向到文件package.txt中。
日志保存模块用于使用重定向操作符>>将应用程序的日志信息以追加形式写入本地的文本文件中。
上述步骤的具体实现过程为:
日志保存模块调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件的脚本命令为:Logcat|grep xxx.xxx.xxx>>log.txt,其中:Logcat为输出系统中的所有日志信息命令;“|”操作符为一条管道,表示将logcat的输出作为grep命令的输入;grep命令为查询命令,xxx.xxx.xxx为应用程序的包名。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (6)

1.一种应用程序启动日志保存方法,其特征在于:
调用sdk工具的am命令和linux系统的kill命令重复启动并退出待测的应用程序,调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件;使用重定向操作符>>将应用程序的日志信息以追加形式写入本地的文本文件中;
调用sdk工具的am命令和linux系统的kill命令重复启动并退出待测的应用程序包括:
检测当前系统中待测的应用程序的运行状态,所述运行状态为未启动时,调用sdk工具的am命令启动应用程序;所述运行状态为已启动时,调用linux系统的kill命令退出所述应用程序。
2.如权利要求1所述的一种应用程序启动日志保存方法,其特征在于,检测当前系统中应用程序的运行状态包括:
调用linux系统的top命令获取当前系统中正在运行的应用程序列表;
判断待测的应用程序的名称是否在所述应用程序列表中;
若存在,应用程序的运行状态为已启动;若不存在,应用程序的运行状态为未启动。
3.一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1或2所述的方法。
4.一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:处理器执行计算机程序时实现权利要求1或2所述的方法。
5.一种应用程序启动日志保存系统,其特征在于,包括:
应用重启模块,其用于调用sdk工具的am命令和linux系统的kill命令重复启动并退出待测的应用程序;
日志保存模块,其用于调用linux系统的Logcat命令将应用程序的日志信息以追加形式写入本地文件;使用重定向操作符>>将应用程序的日志信息以追加形式写入本地的文本文件中;
所述应用重启模块用于:
检测当前系统中待测的应用程序的运行状态,所述运行状态为未启动时,调用sdk工具的am命令启动应用程序;所述运行状态为已启动时,调用linux系统的kill命令退出所述应用程序。
6.如权利要求5所述的一种应用程序启动日志保存系统,其特征在于:所述应用重启模块检测当前系统中待测的应用程序的运行状态包括:
调用linux系统的top命令获取当前系统中正在运行的应用程序列表;
判断待测的应用程序的名称是否在所述应用程序列表中;
若存在,应用程序的运行状态为已启动;若不存在,应用程序的运行状态为未启动。
CN201810023298.6A 2018-01-10 2018-01-10 应用程序启动日志保存方法、存储介质、电子设备及系统 Active CN108197000B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810023298.6A CN108197000B (zh) 2018-01-10 2018-01-10 应用程序启动日志保存方法、存储介质、电子设备及系统
PCT/CN2018/081313 WO2019136852A1 (zh) 2018-01-10 2018-03-30 应用程序启动日志保存方法、存储介质、电子设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810023298.6A CN108197000B (zh) 2018-01-10 2018-01-10 应用程序启动日志保存方法、存储介质、电子设备及系统

Publications (2)

Publication Number Publication Date
CN108197000A CN108197000A (zh) 2018-06-22
CN108197000B true CN108197000B (zh) 2021-04-09

Family

ID=62588615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810023298.6A Active CN108197000B (zh) 2018-01-10 2018-01-10 应用程序启动日志保存方法、存储介质、电子设备及系统

Country Status (2)

Country Link
CN (1) CN108197000B (zh)
WO (1) WO2019136852A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050075A (zh) * 2013-03-11 2014-09-17 百度国际科技(深圳)有限公司 Andriod应用程序的测试方法和装置
WO2016000544A1 (zh) * 2014-06-30 2016-01-07 北京金山安全软件有限公司 处理app的cpu占用率异常的方法、装置及移动终端
CN106844136A (zh) * 2016-12-06 2017-06-13 北京智能管家科技有限公司 一种程序崩溃信息的收集方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030226056A1 (en) * 2002-05-28 2003-12-04 Michael Yip Method and system for a process manager
CN103049371A (zh) * 2012-11-07 2013-04-17 青岛海信传媒网络技术有限公司 Android应用程序测试方法和测试装置
CN103838663A (zh) * 2012-11-20 2014-06-04 腾讯科技(深圳)有限公司 一种应用程序的测试方法及装置
CN105204849A (zh) * 2015-08-27 2015-12-30 努比亚技术有限公司 压力测试系统及其实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050075A (zh) * 2013-03-11 2014-09-17 百度国际科技(深圳)有限公司 Andriod应用程序的测试方法和装置
WO2016000544A1 (zh) * 2014-06-30 2016-01-07 北京金山安全软件有限公司 处理app的cpu占用率异常的方法、装置及移动终端
CN106844136A (zh) * 2016-12-06 2017-06-13 北京智能管家科技有限公司 一种程序崩溃信息的收集方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
重复开启关闭测试程序;佚名;《博客园》;20141225;博客正文 *

Also Published As

Publication number Publication date
CN108197000A (zh) 2018-06-22
WO2019136852A1 (zh) 2019-07-18

Similar Documents

Publication Publication Date Title
JP4901075B2 (ja) コンピュータ読取可能な媒体、方法及びコンピューティングデバイス
US9274923B2 (en) System and method for stack crawl testing and caching
US9727436B2 (en) Adding a profiling agent to a virtual machine to permit performance and memory consumption analysis within unit tests
EP2368189B1 (en) Debugging pipeline
JP2019519056A5 (zh)
WO2021057057A1 (zh) 操作系统级程序的目标码覆盖率测试方法、系统及介质
RU2628921C1 (ru) Система и способ выполнения антивирусной проверки файла на виртуальной машине
RU2008138698A (ru) Модель абстрактного исполнения для мета-рабочего цикла, основанного на продолжении
US9459991B2 (en) Heap dump object identification in a heap dump analysis tool
CN109189687A (zh) 一种获取Android日志的方法和装置
CN103246566A (zh) 应用程序的资源监控方法及装置
CN107463485B (zh) 基于方法栈的日志获取方法、装置和终端
CN105550575A (zh) 一种未导出的函数地址和数据结构偏移的获取方法及装置
CN108197000B (zh) 应用程序启动日志保存方法、存储介质、电子设备及系统
CN110830796B (zh) 电视应用测试方法、电视应用测试装置和可读存储介质
US8752026B2 (en) Efficient code instrumentation
US8726244B2 (en) Software breakpoint handling by eliminating instruction replacement and execution under certain conditions
TW201015296A (en) Method for auto-testing environment variable setting
US7636869B2 (en) Program dynamically burnt system and method
CN106897051B (zh) 一种进程清理的方法及装置
KR100428712B1 (ko) 멀티 태스크 프로그램의 논스톱 디버깅을 위한트레이스포인트 설정 방법
JPH07191876A (ja) プログラム試験装置とその使用方法
CN113515729B (zh) 一种安卓端自动化绕过反调试的方法和系统
JP2658982B2 (ja) 特定命令実行検出方式
CN104778050A (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
GR01 Patent grant
GR01 Patent grant