`
lvzun
  • 浏览: 56651 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Android 调试工具集

阅读更多

1.TraceView
1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等

 2)方法:

  a)在程序代码中加入追踪开关

  import android.os.Debug;

  ……

  android.os.Debug.startMethodTracing(“/data/tmp/test”);// 先建/data/tmp目录

  ……// 被追踪的程序段

  android.os.Debug.stopMethodTracing();

  b)编译,运行后,设备端生成/data/tmp/test.trace文件

  c)把trace文件复制到PC端

  $ adb pull /data/tmp/test.trace ./

  d)使用android自带工具分析trace文件

  $ANDROID_SRC/out/host/linux-x86/bin/traceview test.trace

  此时可看到各个函数被调用的次数CPU占用率等信息

  e)使用android自带工具分析生成调用关系类图

  $ apt-get install graphviz# 安装图片相关软件

  $ANDROID_SRC/out/host/linux-x86/bin/dmtracedump -g test.png test.trace

  此时目录下生成类图test.png

 3)注意

  trace文件生成与libdvm模块DEBUG版本相冲突,所以此方法只适用于对非DEBUG版本模拟器的调试,否则在分析trace文件时会报错


2.HProf (Heap Profile)

 1)功能:

  用于java层面的内存分析,显示详细的内存占用信息,指出可疑的内存泄漏对象

 2)方法:

  a)在代码中加入dump动作

  import android.os.Debug;

  import java.io.IOException;

  ……

  try {

  android.os.Debug.dumpHprofData(“/data/tmp/input.hprof”); // 先建/data/tmp目录

  } catch (IOException ioe) {

  }

  b)把hprof文件复制到PC端

  $ adb pull /data/tmp/input.hprof ./

  c)使用命令hprof-conv把hprof转成MAT识别的标准的hprof

  $ $ANDROID_SRC/out/host/linux-x86/bin/hprof-conv input.hprof output.hprof

  d)使用MAT工具看hprof信息

  下载MAT工具:http://www.eclipse.org/mat/downloads.php

  用工具打开output.hprof

 3)注意:此工具只能显示java层面的,而不能显示C层的内存占用信息


3.SamplingProfile (android 2.0上版本使用)

 1)功能

  每隔N毫秒对当前正在运行的函数取样,并输出到log中

 2)在代码中加入取样设定

  import dalvik.system.SamplingProfiler

  ……

  SamplingProfile sp = SamplingProfiler.getInstance();

  sp.start(n);// n为设定每秒采样次数

  sp.logSnapshot(sp.snapshot());

  ……

  sp.shutDown();

  它会启一个线程监测,在logcat中打印信息


4.用发系统信号的方式取当前堆栈情况和内存信息

 1)原理

  dalvik虚拟机对SIGQUIT和SIGUSR1信号进行处理(dalvik/vm/SignalCatcher.c),分别完成取当前堆栈和取当前内存情况的功能

 2)用法

  a)$ chmod 777 /data/anr -R# 把anr目录权限设为可写

  $ rm /data/anr/traces.txt# 删除之前的trace信息

  $ ps # 找到进程号

  $ kill -3 进程号 # 发送SIGQUIT信号给该进程,此时生成trace信息

  $ cat /data/anr/traces.txt

  功能实现:遍历thread list(dalvik/vm/Thread.c:dvmDumpAllThreadEx()),并打印当前函数调用关系(dalvik/vm/interp/Stack.c:dumpFrames())

  b)$ chmod 777 /data/misc -R

  $ ps # 找到进程号

  $ kill -10 进程号 # 发送SIGQUIT信事信号给该进程,此时生成hprof信息

  $ ls /data/misc/*.hprof

  此时生成hprf文件,如何使用此文件,见第二部分(HProf)

  注意:hprof文件都很大,注意用完马上删除,以免占满存储器


5.logcat及原理

 1)android.util.Log利用println的标准java输出词句,并加前缀I/V/D….

 2)dalvik利用管道加线程的方式,先利用dup2把stdout和stderr重定向到管理中(vm/StdioConverter.c:dvmstdioConverterStartup),然后再启动一个线程从管道另一端读出内容(dalvik/vm/StdioConverter.c:stdioconverterThreadSt art()),使用LOG公共工具(system/core/liblog/logd_write.c: __android_log_print())输出到/dev/log/*中去

 3)logcat通过加不同参数看/dev/log/下的不同输入信息

  # logcat -b main显示主缓冲区中的信息

  # logcat -b radio显示无线缓冲区中的信息

  # logcat -b events显示事件缓冲区中的信息


6.jdwp(java debug wire protocol)及原理

 1)虚拟机(设备端)在启动时加载了Agent JDWP 从而具备了调试功能。在调试器端(PC端)通过JDWP协议与设备连接,通过发送命令来获取的状态和控制Java程序的执行。JDWP 是通过命令(command)和回复(reply)进行通信的。

 2)JDK 中调试工具 jdb 就是一个调试器,DDMS也提供调试器与设备相连。

 3)dalvik为JDWP提供了两种连接方式:tcp方式和adb方式,tcp方式可以手工指定端口,adb方式自动设定为8700端口,通常使用DDMS调试就是通过adb方式


7.monkey

 1)monkey是一个android自带的命令行工具。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。

 2)方法

  在设备端打开setting界面

  $ adb shell 
   # monkey -p com.android.settings -v 500

  此时可以看到界面不断被切换


8.其它小工具

 具体见android.os.Debug中提供的工具

 1)取毫微秒级的时间,用于计算时间

  threadCpuTimeNanos()

 2)统计两点间的内存分配情况

  startAllocCounting()

  stopAllocCounting()

  getGlobalAllocCount()

  get…..

 3)打印当前已load的class

  getLoadedClassCount()

  printLoadedClasses()它需要打开NDEBUG功能才能打开system/core/中Log功能


9.打印debug信息

  $ adb bugreport

分享到:
评论

相关推荐

    Android_Toolkit_V1.4(Android开发工具集)

    本软件是一款轻捷的Android Java应用程序安装、调试工具,部分功能可以在google提供的Android SDK开发包里面的DDMS(Dalvik Debug Monitor Service (DDMS) Tool)找到官方的实现。DDMS功能很强大,但功能过于繁多,...

    快速Android 反编译 回编译 工具集 含直接调试破解之法

    含Android 反编译 回编译 工具 最新apktool jar查看器jdgui Smali2Java dex2jar 签名signapk Smali2JavaUI AXMLPrinter2 等工具.... 直接调试破解之法->第一步:使用apktool来破解apk java -jar apktool_2.0.0rc4....

    SwissArmyKnife:Android ui调试工具

    SwissArmyKnife是一个方便调试的android UI的工具。可以直接在android设备屏幕上显示控件的相关信息。3.x版本对根View没有任何要求,可以是任意类型的view。3.x需要弹窗权限。由于时间有限,暂未兼容Android5.0以下...

    Android移动应用开发 第3版 卷1卷2合集part2

    充分利用Android的特性 应用程序发布和分发的进阶话题 附录共7个部分 附录还包含了Android开发常用工具 调试桥和SQLite 的使用指南  《Android移动应用开发 第3版 卷Ⅱ:提高篇》不仅适合Android应用程序开发人员...

    Android Studio下载详解.zip

    它提供了完整的Android开发工具集,包括Android SDK、模拟器、代码编辑器、性能分析器、版本控制系统等,帮助开发者高效地进行Android应用的开发、测试和调试。 在下载Android Studio之前,我们需要做好以下准备...

    android 系统上使用的串口调试工具.zip

    软件开发设计:PHP、QT、...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    最新busybox工具集

    Android默认只有toolbox工具集,调试的时候很多命令不能用,将busybox拷贝到system/bin下,就可以使用busybox命令集了

    Android移动应用开发 第3版 卷1卷2合集part1

    充分利用Android的特性 应用程序发布和分发的进阶话题 附录共7个部分 附录还包含了Android开发常用工具 调试桥和SQLite 的使用指南  《Android移动应用开发 第3版 卷Ⅱ:提高篇》不仅适合Android应用程序开发人员...

    Android入门中文教程

    内容简介 Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。...丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件

    Android反编译工具ApkIDE(改之理)

    APK改之理(APK IDE)是一款可视化的、易用的、快捷的、一体化的安卓APK修改工具,集成了ApkTool、Dex2jar、JD-GUI等Apk修改工具,集Apk反编译、Apk查壳、加密解密、Apk调试分析、Apk打包、Apk签名,支持语法高亮的...

    android开发资料大全

    实用Android开发工具和资源精选 APK权限大全 - Android必懂知识 最无私的Android资料(书籍+代码)分享[总结] Android中文帮助教程(非常合适新手入门) android程序编写及调试新手入门 大家一起学Android(Windows...

    android系统原理及开发要点详解

     嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。  读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,...

    Android开发资料合集-World版!

    9.49、在模拟器上调试GOOGLE MAPS 271 9.50、建立GPRS连接 273 9.51、获取手机位置 274 9.5* 获得经纬度,地名标注在地图上 274 9.52、获得两个GPS坐标之间的距离 276 9.53、通过经纬度显示地图 277 9.54、路径规划 ...

    Android中文帮助文档.rar

    Android中文帮助文档,PDF格式,107页。 Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和... 丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件

    深入Android应用开发 核心技术解析与最佳实践

    第12章针对商业应用的需要讲解了Android的调试、测试与性能优化;第13章全面地剖析了Android的编译系统,包括编译工具、映像文件编译、SDK编译、NDK编译和目标系统的配置等;第14章分析了Android系统的启动过程;第...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    [14本经典Android开发教程]-3-Android SDK 中文开发文档

    · 丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件 Android 架构 下图显示的是Android操作系统的主要组件。每一部分将会在下面具体描述。 已上传2本: [14本经典Android...

    adb驱动工具集

    adb驱动,支持友坚android210,4412,且支持远程网络调试!调试方法http://write.blog.csdn.net/postedit/9382733

    浅谈Android Studio如何Debug对应so文件C/C++代码

    在C/C++跨平台开发中,我们知道在Windows上可以通过VS,进行单步断点...1、The Android Native Development Kit (NDK) : 让你能在 Android 上面使用 C 和 C++ 代码的工具集。 2、CMake 外部构建工具。如果你准备只使用

Global site tag (gtag.js) - Google Analytics