zoukankan      html  css  js  c++  java
  • [转】:Android调试工具及方法

    http://www.cnblogs.com/feisky/archive/2010/01/01/1637566.html
    --

    Logcat


    Dump一份系统消息的日志。这些消息包括模拟器抛出错误时的堆栈跟踪。


    Android Log


    一个记录日志的类,用来将消息写入模拟器上的日志文件中。如果你在DDMS上运行logcat的话你可以就实时查看消息。在你的代码中加入几个写日志方法的调用。
    为了使用Log类,你只需要调用Log.v()(详细),Log.d()(debug),Log.i()(information),Log.w()(warning)
    或者 Log.e()(error),根据你想获得的日志信息来选择相应的方法

    Log.i("MyActivity", "MyClass.getView() — Requesting item number " + position)
    你可以用logcat来读取这些信息

    Traceview

    Android可以保存一个日志用来记录被调用的方法以及该方法被调用的次数,通过Traceview你可以在一个图形化的界面中查看这个日志文件。

    adb


    Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器的状态。

    发出Android命令: 你可以在你的开发机上的命令行或脚本上发布Android命令,使用方法:

    adb [-d|-e|-s <serialNumber>] <command>

    进入Shell:adb shell

    查询模拟器/设备实例
    adb devices 列出模拟器的序列号和状态

    给特定的模拟器/设备实例发送命令
    如果有多个模拟器/设备实例在运行,在发布adb命令时需要指定一个目标实例。 这样做,请使用-s
    选项的命令。在使用的-s 选项是
    adb -s <serialNumber> <command>
    如:db -s
    emulator-5556 install helloWorld.apk

    安装软件:
    adb install <path_to_apk>

    从模拟器/设备中拷入或拷出文件
    可以使用adbpull ,push
    命令将文件复制到一个模拟器/设备实例的数据文件或是从数据文件中复制。install 命令只将一个.apk文件复制到一个特定的位置,与其不同的是,pull 和
    push 命令可令你复制任意的目录和文件到一个模拟器/设备实例的任何位置。
    从模拟器或者设备中复制文件或目录,使用(如下命):
    adb pull
    <remote> <local>
    将文件或目录复制到模拟器或者设备,使用(如下命令)
    adb push
    <local> <remote>
    在这些命令中, <local> 和<remote>
    分别指通向自己的发展机(本地)和模拟器/设备实例(远程)上的目标文件/目录的路径
    下面是一个例子::
    adb push foo.txt
    /sdcard/foo.txt

    查询日志 adb logcat

    Stopping the adb Server
    在某些情况下,你可能需要终止Android 调试系统的运行,然后再重新启动它。
    例如,如果Android 调试系统不响应命令,你可以先终止服务器然后再重启,这样就可能解决这个问题.
    用kill-server 可以终止adb
    server。你可以用adb发出start-server命令来重新启动服务器.

    设备上调试和测试的设置


    Android提供了众多的设置使你可以更容易的调试和测试程序。要进入开发设置页面,在模拟器中转到Dev Tools > Development
    Settings
    。在该设置页面有以下选项:


    • Debug app:选择要调试的程序。你不需要设定其关联至调试器,但是设定这个值有两个效果:

      • 在调试的时候,如果你在一个断点处暂停了过长的时间,这个设定会防止Android抛出一个错误
      • 这个设定使你可以选择“等待调试器”选项,使程序只有在调试器关联上之后才启动

    • Wait for
      Debugger
      :阻塞所选的程序的加载直到有调试器关联上,这样你就可以在onCreate()中设置断点,这对于调试一个Activity的启动进程是非常重要的。当你对该选项进行了更改,任何正在运行的程序的实例都会被终止。你只有在上面的选项中选择了一个调试程序才能够选中该选项。你也可以在代码中添加waitForDebugger()来实现同样的功能。

    • Immediately destroy
      activities
      :告诉系统一旦一个activity停止了就销毁该activity(例如当Android释放内存的时候)。这对于测试代码onFreeze(Bundle)/onCreate(android.os.Bundle)是非常有用的,否则会比较困难。如果你的程序没有保存状态,那么选择这个选项很可能会引发很多问题。

    • Show screen updates:对于任何正在被重绘的screen
      sections都会在其上闪现一个粉红色的矩形。这对于发现不必要的screen绘制是很有必要的。
    • Show CPU
      usage
      :在屏幕上方显示CPU信息,显示有多少CPU资源正在被使用。上方红色条显示总的CPU使用率,它下方绿色的条显示CPU用在compositing
      the screen上的时间。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。
    • Show screen
      FPS
      :显示当前的帧率。这对于查看游戏达到的总的帧率是非常有用的。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。
    • Show background:当没有activity
      screens可见时,显示一个背景模式。一般是不会出现的,仅仅在Debug的时候会出现。

    设定的选项在模拟器重启之后仍然有效,如果要取消设定的选项,在取消设定以后还要重启模拟器,才能生效。

    重要的调试小提示


    快速的堆栈dump

    要在模拟器上获得一个堆栈dump,你可以通过adb shell登入,用“ps”找到你想要的进程,然后“kill -3”,
    堆栈跟踪信息就会记录到日志文件中了。
    

    在模拟器屏幕上显示有用信息

    设备上可以显示诸如CPU利用率或者对重绘区域的边缘高亮显示等有用信息,在开发设置窗口可以打开或者关闭这些功能。
    

    从模拟器上获取系统状态信息(dumpstate)

    你可以通过Dalvik Debug Monitor Service工具来获得dumpstate信息。

    从模拟器上获取程序状态信息(dumpsys)

    你可以通过Dalvik Debug Monitor Service工具来获得dumpsys信息。

    获取无线连接信息

    你可以通过Dalvik Debug Monitor Service工具来获得无线连接信息。在Device菜单,选择“Dump radio state”
    

    日志记录跟踪数据

    你可以在一个activity中通过调用android.os.Debug.startMethodTracing()来用日志来记录方法调用和其他跟踪数据。
    

    日志记录Radio Data

    默认情况下,radio信息是不会记录在系统中的(因为数据量巨大)。然而,你可以通过下面的命令来开启radio记录
    adb shell
    logcat -b radio
    

    运行adb

    Andoid中自带了一个叫adb的工具,该工具功能强大,可以移动并同步文件到模拟器,转发端口。在模拟器上运行一个UNIX shell。

    从模拟器上获取屏幕截图

    Dalvik Debug Monitor Server (DDMS)可以从模拟器上获取屏幕截图
    

    利用调试帮助类

         Android为了开发者的方便提供了诸如util.LogDebug等帮助类


    命令行运行程序的方法


    参考:http://www.javaeye.com/topic/201856 
    http://www.javaeye.com/topic/149227


    进入shell


    引用

    C:\Documents and Settings\mawenjian>adb
    shell

    看一下命令的帮助

    引用


    # am -help
    am
    -help
    Error: Unknown command:
    -help
    usage: am
    [start|instrument]
           am start
    [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
                    [-c <CATEGORY> [-c
    <CATEGORY>] ...]
                    [-e <EXTRA_KEY>
    <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
                    [-n <COMPONENT>]
    [-D] [<URI>]
           am
    instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
                    [-w]
    <COMPONENT>

    好了,试一下启动浏览器

    引用

    # am start -n
    com.google.android.browser/com.google.android.browser.BrowserActivity
    am start -n
    com.google.android.browser/com.google.android.browser.BrowserActivity
    Starting: Intent {
    comp={com.google.android.browser/com.google.android.browser.BrowserActivity}
    }

    ok,成功了
    大家试试下面的命令吧:

    引用


    # am start -a android.intent.action.VIEW -d
    http://mwjian.javaeye.com
    am start
    -a android.intent.action.VIEW -d http://mwjian.javaeye.com
    Starting: Intent {
    action=android.intent.action.VIEW data=http://mwjian.javaeye.com }

    # am start -a
    android.intent.action.CALL -d tel:88888888
    am start -a android.intent.action.CALL
    -d tel:88888888
    Starting: Intent {
    action=android.intent.action.CALL data=tel:88888888 }

    # am start -a
    android.intent.action.ALL_APPS
    am
    start -a android.intent.action.ALL_APPS
    Starting: Intent {
    action=android.intent.action.ALL_APPS }

    # am start -a
    android.intent.action.VIEW geo:0,0?q=shanghai
    am start -a android.intent.action.VIEW
    geo:0,0?q=shanghai
    Starting: Intent
    { action=android.intent.action.VIEW data=geo:0,0?q=shanghai
    }

    本文参考:Android手册 www.cnblogs.com/jacktu
    万能的G.cn
    做个快乐的自己。
  • 相关阅读:
    handlebars.js 模板引擎
    g2-plugin-slider.js 数据滚动条插件
    js拓扑图-vis插件
    js地图-leaflet
    css3 animation动画停留在最后一帧
    input输入手机号增加空格
    百度输入框 获取焦点时 滚动到页面顶部的实现
    C#入门经典-第15章Windows 编程
    C# 经典入门12章-System.Collections.Generic命名空间
    C# 经典入门12章-使用泛型-1
  • 原文地址:https://www.cnblogs.com/Jessy/p/2324414.html
Copyright © 2011-2022 走看看