`
lvzun
  • 浏览: 57558 次
  • 性别: 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调试工具及方法

    本文将详细讲解Android调试工具及方法,包括使用Android Studio的调试器、Logcat、布局检查器、内存分析工具等。 一、Android Studio调试器 Android Studio内置了强大的Java和Kotlin调试器,可以设置断点,单步...

    i2c调试工具支持android、Linux

    i2c调试工具是针对嵌入式系统,尤其是基于Android和Linux操作系统的设备设计的,主要用于检测和调试I2C(Inter-Integrated Circuit)总线上的设备。在这些系统中,I2C总线被广泛用于连接微控制器、传感器、显示模块...

    android 反编译工具集

    "android 反编译工具集"是一个集合了常用的Android反编译工具,包括dex2jar和apktool,它们是Android开发者和逆向工程师的重要工具。 **dex2jar** dex2jar是一个用于将Dalvik Executable (.dex)文件转换为Java字节...

    Android逆向工具合集

    `apktool`、`dex2jar`、`jd-gui`以及签名工具的组合使用,使得开发者能够深入探索Android应用的内部机制,无论是为了调试、学习还是安全审计,都具有很高的价值。而“xiaodoubi”这个文件可能是该工具合集中集成的...

    2018Android反编译工具合集

    apktool2.3.3是该工具的一个稳定版本,提供了更高效的解析和编译功能,支持Android的最新特性,使得开发者能更深入地理解和调试应用。 接下来,dex2jar是一个用于将Dalvik字节码(.dex)转换为Java字节码(.jar)的...

    android 权限管理工具集

    首先,Android Studio是Google官方推荐的Android应用开发IDE,它基于IntelliJ IDEA,提供了丰富的功能,如代码自动完成、调试工具以及Gradle构建系统等。对于权限管理,Android Studio内置了对最新API的支持,使得...

    android linux i2c调试工具源码 i2c-tools-3.0.0.zip

    《Android/Linux I2C调试工具源码解析及应用》 在Android系统开发中,I2C(Inter-Integrated Circuit)总线是一种常见的通信协议,用于设备间的短距离、低速率通信,广泛应用于传感器、显示屏等硬件接口。对于...

    Android 调试桥

    Android调试桥(ADB)是Android开发者不可或缺的工具之一,主要用于管理Android设备或模拟器的状态。它提供了丰富的功能集,包括但不限于执行设备上的Shell命令、端口转发、文件传输以及各种调试和测试功能。 #### ...

    Android_Toolkit_V1.4(Android开发工具集)

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

    Android视频调试指南

    而FFmpeg则是一个强大的跨平台工具集,包含编解码器、音视频处理函数等,适用于更底层的处理。 在实际开发中,还要考虑兼容性问题。不同的Android版本和设备可能对视频支持有所不同,因此进行广泛的设备测试和适配...

    ESP8266 调试工具

    ESP8266调试工具是开发和测试ESP8266 Wi-Fi模块所必需的辅助软件,这些工具帮助开发者在编程、配置和故障排查过程中更有效地进行工作。ESP8266因其低成本、高性能和易用性,在物联网(IoT)项目中广泛使用。以下是对...

    Android反编译工具合集

    在实际应用中,"Android逆向助手2.2"这样的工具集极大简化了上述步骤,提供了一键化的操作,提高了效率。但值得注意的是,反编译行为应遵守版权法律,只应用于合法和教育目的,避免侵犯他人的知识产权。同时,了解...

    Android应用源码之14.程序调试技术学习.zip

    Android Studio的Profiler工具集可以显示线程状态,帮助你跟踪并解决这些问题。 另外,Android的Intent调试也值得一提。Intent是Android系统中组件间通信的主要方式。当应用启动活动、服务或者广播接收器时,Intent...

    全志T113-S3 ADB软件包

    全志T113-S3 ADB软件包是一款专为基于全志T113-S3芯片的设备设计的Android调试工具集。ADB(Android Debug Bridge)是Android开发者常用的一款命令行工具,它允许开发者通过USB或网络连接将电脑与Android设备进行...

    MTK GAT调试工具,里面有打开dbg文件的工具

    这个工具集主要用于Android设备的开发和调试过程,尤其是对于基于MediaTek处理器的设备,它能够帮助开发者深入理解系统运行状态,定位并解决各种软件问题。在标题和描述中提到的"dbg文件",是MediaTek平台特有的调试...

    android逆向工具集.rar

    本文将深入探讨Android逆向工具集,包括apktool、dex2jar和jd-gui这三款关键工具,帮助开发者深入了解APK文件结构和Dalvik虚拟机的字节码。 首先,我们来看apktool。这款工具是Android逆向工程师的得力助手,主要...

    BeeFramework_Android, 极简化的Android App开发框架和App内调试工具.zip

    6. **App内调试工具**:内置调试工具集,包括性能监控、日志查看、网络请求追踪等功能,方便开发者在开发过程中实时发现问题并修复。 **二、App内调试工具** 1. **性能监控**:能够实时监测内存占用、CPU使用率、...

    gdb动态调试android可执行程序1

    1. Android NDK:Android NDK是一组工具集,允许开发者使用C++和其他native语言来编写Android应用程序中的部分代码。NDK提供了一个编译器、库和调试工具,可以帮助开发者快速开发高性能的Android应用程序。 2. GDB...

    Android工具合集

    这个工具集提供的签名工具简化了这一流程,使开发者能够轻松地为自己的应用生成签名文件。 至于"xiaodoubi"这个文件,根据上下文推测,它可能是一个智能聊天机器人的实现,可能被集成在这个工具包中,提供互动式的...

    android工具集(lib包)

    在Android开发中,工具集(Library)是一种封装了多种实用功能的代码库,方便开发者在自己的项目中快速实现特定功能,提高开发效率。本资源提供的"android工具集(lib包)"就是一个这样的类库,其核心是`utilcode`...

Global site tag (gtag.js) - Google Analytics