有关Monkey命令的两个隐藏选项

一般Android App的测试过程,常用的Monkey选项如同官网中所列,但如果看Monkey源代码或则通过 monkey --help,还是能找到一些有意思的东西。
其中,有2个网页中没有提到的选项。
1. --bugreport
2. --hprof

bugreport 其实对应的是一个叫做bugreport的工具,可以运行adb bugreport观察,它提供了那个时刻系统非常多的信息,从meminfo,cpuinfo,vmstat到dmesg,buildprop等信息,多到想不到。有兴趣的,可以google之。
当这个标签在Monkey的运行中标识的时候,每当Monkey运行时发现AppCrash,anr,system not responding的时候,Monkey就会自动记录错误时的信息。

    // Write the bugreport to the sdcard.
    private void getBugreport(String reportName) {
        reportName += MonkeyUtils.toCalendarTime(System.currentTimeMillis());
        String bugreportName = reportName.replaceAll("[ ,:]", "_");
        commandLineReport(bugreportName + ".txt", "bugreport");
    }

可以在 /mnt/sdcard里面找到类似于app_crashnet.crimoon.pm.a91_2014-07-29_01_01_22.990_.txt 这样的文件。每个问价有15MB到20MB大小,内容翔实,乃是开发debug之宝。

hprof的作用就是,在monkey开始之前和结束之后(正常结束,被kill的不算),会调用如下代码

    /**
     * Send SIGNAL_USR1 to all processes. This will generate large (5mb)
     * profiling reports in data/misc, so use with care.
     */
    private void signalPersistentProcesses() {
        try {
            mAm.signalPersistentProcesses(Process.SIGNAL_USR1);

            synchronized (this) {
                wait(2000);
            }
        } catch (RemoteException e) {
            System.err.println("** Failed talking with activity manager!");
        } catch (InterruptedException e) {
        }
    }

这个代码的作用,就是对于所有persistent的process,获取它的hprof信息,类似于对于所有的persistent应用 kill -10 pid。它的好处也不言而喻,hprof文件出来了,找内存泄漏还远么。
有一点要吐槽的是,注释里面明明说 /data/misc里面记录该文件,实际上,还是保存在了 /mnt/sdcard 里面。文件名类似于 com.aliyun.ams.assistantservice_hprof_dump20140728203235.prof。一般每个文件大约5MB,也看到过 com.android.systemui,比较夸张,有25MB。
可见,这个开关对于测试整个系统的内存泄漏,还是会有比较大的帮助的。

时间: 2024-10-17 23:14:39

有关Monkey命令的两个隐藏选项的相关文章

shell-在命令行中设置开发者选项

问题描述 在命令行中设置开发者选项 在一些设备上开发者选项被隐藏了(不是android4.2的原因,是做这个rom的厂家干的) 那么如何使用它呢? 最好是在shell 中将之开启:我要用的是显示触摸操作和指针位置这两个功能 求教 解决方案 不过我知道怎么打开 不一定要在命令行中设置 你可以打开再设置 代码是 Intent intent = new Intent("com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS"); inten

Android测试教程(17):Monkey 命令行工具

写完应用之后,作完单元测试和功能测试,有必要对应用的抗打击能力做个测试,最好的方法是雇个"猴子"在测试,猴子 可以胡乱瞎按键,在这种情况下,你的应用是否还能正常工作呢? Android 测试包中提供了一个Monkey工具,就提供了"猴 子"功能,不过比真"猴子"还要智能一些,你还可以指挥这个猴子, 比如按键的比例,触发某个事件的频率等等. 一 个简单的用法,比如你的应用程序的包名为:com.pstreets.navigator 可以使用  adb

win7系统文件夹属性中隐藏选项显示灰色不可改怎么办

  文件夹属性中隐藏选项显示灰色不可改故障图: 操作步骤: 1.首先鼠标右击文件夹选择重命名将文件夹的名称更改为非中文的名称,比如"feichengwurao"; 2.然后在开始菜单中搜索cmd,然后选择以管理员命令打开它,之后输入下面的命令,每输一行都回车一次; F: CD dianying Attrib-s-r-h feichengwurao 3.命令运行之后,就就可以看到隐藏属性不再显示为不可选的灰色了哦,问题解决.

电脑文件夹属性中的隐藏选项无法勾选怎么解决

  1.按Win+X选择打开"命令提示符(管理员)",或者右击命令提示符,选择"以管理员身份运行"; 2.在打开的cmd窗口中输入该文件夹所在盘符,如E盘是输入"e:",并回车; 3.进入E盘后,如果不是在根目录下,需进入某目录,则通过"cd 空格 文件夹名"访问该目录; 4.然后输入"attrib -s -h /s /d"回车,注意其中的空格; 5.执行上述命令后,命令行返回E盘根目录,系统卷标目录拒绝访

利用 Monkey 命令操作屏幕快速滑动_python

一.Monkey测试简介 Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常. 二.Monkey程序介绍 1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar: 2) Monkey.jar程序是由一个名为"monkey"的Shell脚本来

android-运行时如何隐藏选项菜单的按钮

问题描述 运行时如何隐藏选项菜单的按钮 在安卓应用里用到了选项菜单.其中有俩按钮.我要实现通过布尔值隐藏/显示按钮.我写了代码,但是木有鲜果. 代码: @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.layout.menushowmoredetails, menu); return true; } @Ove

使用 Linux 的 strace 命令跟踪/调试程序的常用选项

使用 Linux 的 strace 命令跟踪/调试程序的常用选项 在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用.当你想知道程序和操作系统如何交互的时候,这是极其方便的,比如你想知道执行了哪些系统调用,并且以何种顺序执行. 这个简单而又强大的工具几乎在所有的Linux操作系统上可用,并且可被用来调试大量的程序. 命令用法 让我们看看strace命令如何追踪一个程序的执行情况. 最简单的形式,strace后面可以跟任何命令.它将列出许许多多的系统调用.一开始,我们并不能理解所有的

iOS 消息(即方法调用)的两个隐藏参数 :self 和 _cmd

iOS 消息(即方法调用)的两个隐藏参数 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 以下摘自<Objective-C Runtime Programming Guide> 使用

Android手机monkey命令自动化压力测试

这里我们使用网上下载的QQ手机安装程序QQ_244.apk为例 一.安装程序 有以下两种方法: 通过DDMS安装,将程序安装包拖到模拟器data/app目录即可自动安装 装的软件都是在这个data/app, system/app是系统里的软件,data/app这个文件夹里的软件是占用手机内存 2.通过adb命令安装 复制QQ_244.apk安装文件复制到sdk\platform-tools下,也就是和adb在同一个文件夹 cd 到该文件夹下面  执行命令adb install QQ_244.ap