`
- 浏览:
57558 次
- 性别:
- 来自:
长沙
-
1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等
android.os.Debug.startMethodTracing(“/data/tmp/test”);// 先建/data/tmp目录
android.os.Debug.stopMethodTracing();
b)编译,运行后,设备端生成/data/tmp/test.trace文件
$ adb pull /data/tmp/test.trace ./
$ANDROID_SRC/out/host/linux-x86/bin/traceview test.trace
e)使用android自带工具分析生成调用关系类图
$ apt-get install graphviz# 安装图片相关软件
$ANDROID_SRC/out/host/linux-x86/bin/dmtracedump -g test.png test.trace
trace文件生成与libdvm模块DEBUG版本相冲突,所以此方法只适用于对非DEBUG版本模拟器的调试,否则在分析trace文件时会报错
用于java层面的内存分析,显示详细的内存占用信息,指出可疑的内存泄漏对象
import java.io.IOException;
android.os.Debug.dumpHprofData(“/data/tmp/input.hprof”); // 先建/data/tmp目录
} catch (IOException ioe) {
$ 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
下载MAT工具:http://www.eclipse.org/mat/downloads.php
3)注意:此工具只能显示java层面的,而不能显示C层的内存占用信息
3.SamplingProfile (android 2.0上版本使用)
每隔N毫秒对当前正在运行的函数取样,并输出到log中
import dalvik.system.SamplingProfiler
SamplingProfile sp = SamplingProfiler.getInstance();
sp.start(n);// n为设定每秒采样次数
sp.logSnapshot(sp.snapshot());
dalvik虚拟机对SIGQUIT和SIGUSR1信号进行处理(dalvik/vm/SignalCatcher.c),分别完成取当前堆栈和取当前内存情况的功能
a)$ chmod 777 /data/anr -R# 把anr目录权限设为可写
$ rm /data/anr/traces.txt# 删除之前的trace信息
$ 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
$ kill -10 进程号 # 发送SIGQUIT信事信号给该进程,此时生成hprof信息
此时生成hprf文件,如何使用此文件,见第二部分(HProf)
注意:hprof文件都很大,注意用完马上删除,以免占满存储器
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方式
1)monkey是一个android自带的命令行工具。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。
# monkey -p com.android.settings -v 500
具体见android.os.Debug中提供的工具
printLoadedClasses()它需要打开NDEBUG功能才能打开system/core/中Log功能
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本文将详细讲解Android调试工具及方法,包括使用Android Studio的调试器、Logcat、布局检查器、内存分析工具等。 一、Android Studio调试器 Android Studio内置了强大的Java和Kotlin调试器,可以设置断点,单步...
i2c调试工具是针对嵌入式系统,尤其是基于Android和Linux操作系统的设备设计的,主要用于检测和调试I2C(Inter-Integrated Circuit)总线上的设备。在这些系统中,I2C总线被广泛用于连接微控制器、传感器、显示模块...
"android 反编译工具集"是一个集合了常用的Android反编译工具,包括dex2jar和apktool,它们是Android开发者和逆向工程师的重要工具。 **dex2jar** dex2jar是一个用于将Dalvik Executable (.dex)文件转换为Java字节...
`apktool`、`dex2jar`、`jd-gui`以及签名工具的组合使用,使得开发者能够深入探索Android应用的内部机制,无论是为了调试、学习还是安全审计,都具有很高的价值。而“xiaodoubi”这个文件可能是该工具合集中集成的...
apktool2.3.3是该工具的一个稳定版本,提供了更高效的解析和编译功能,支持Android的最新特性,使得开发者能更深入地理解和调试应用。 接下来,dex2jar是一个用于将Dalvik字节码(.dex)转换为Java字节码(.jar)的...
首先,Android Studio是Google官方推荐的Android应用开发IDE,它基于IntelliJ IDEA,提供了丰富的功能,如代码自动完成、调试工具以及Gradle构建系统等。对于权限管理,Android Studio内置了对最新API的支持,使得...
《Android/Linux I2C调试工具源码解析及应用》 在Android系统开发中,I2C(Inter-Integrated Circuit)总线是一种常见的通信协议,用于设备间的短距离、低速率通信,广泛应用于传感器、显示屏等硬件接口。对于...
Android调试桥(ADB)是Android开发者不可或缺的工具之一,主要用于管理Android设备或模拟器的状态。它提供了丰富的功能集,包括但不限于执行设备上的Shell命令、端口转发、文件传输以及各种调试和测试功能。 #### ...
本软件是一款轻捷的Android Java应用程序安装、调试工具,部分功能可以在google提供的Android SDK开发包里面的DDMS(Dalvik Debug Monitor Service (DDMS) Tool)找到官方的实现。DDMS功能很强大,但功能过于繁多,...
而FFmpeg则是一个强大的跨平台工具集,包含编解码器、音视频处理函数等,适用于更底层的处理。 在实际开发中,还要考虑兼容性问题。不同的Android版本和设备可能对视频支持有所不同,因此进行广泛的设备测试和适配...
ESP8266调试工具是开发和测试ESP8266 Wi-Fi模块所必需的辅助软件,这些工具帮助开发者在编程、配置和故障排查过程中更有效地进行工作。ESP8266因其低成本、高性能和易用性,在物联网(IoT)项目中广泛使用。以下是对...
在实际应用中,"Android逆向助手2.2"这样的工具集极大简化了上述步骤,提供了一键化的操作,提高了效率。但值得注意的是,反编译行为应遵守版权法律,只应用于合法和教育目的,避免侵犯他人的知识产权。同时,了解...
Android Studio的Profiler工具集可以显示线程状态,帮助你跟踪并解决这些问题。 另外,Android的Intent调试也值得一提。Intent是Android系统中组件间通信的主要方式。当应用启动活动、服务或者广播接收器时,Intent...
全志T113-S3 ADB软件包是一款专为基于全志T113-S3芯片的设备设计的Android调试工具集。ADB(Android Debug Bridge)是Android开发者常用的一款命令行工具,它允许开发者通过USB或网络连接将电脑与Android设备进行...
这个工具集主要用于Android设备的开发和调试过程,尤其是对于基于MediaTek处理器的设备,它能够帮助开发者深入理解系统运行状态,定位并解决各种软件问题。在标题和描述中提到的"dbg文件",是MediaTek平台特有的调试...
本文将深入探讨Android逆向工具集,包括apktool、dex2jar和jd-gui这三款关键工具,帮助开发者深入了解APK文件结构和Dalvik虚拟机的字节码。 首先,我们来看apktool。这款工具是Android逆向工程师的得力助手,主要...
6. **App内调试工具**:内置调试工具集,包括性能监控、日志查看、网络请求追踪等功能,方便开发者在开发过程中实时发现问题并修复。 **二、App内调试工具** 1. **性能监控**:能够实时监测内存占用、CPU使用率、...
1. Android NDK:Android NDK是一组工具集,允许开发者使用C++和其他native语言来编写Android应用程序中的部分代码。NDK提供了一个编译器、库和调试工具,可以帮助开发者快速开发高性能的Android应用程序。 2. GDB...
这个工具集提供的签名工具简化了这一流程,使开发者能够轻松地为自己的应用生成签名文件。 至于"xiaodoubi"这个文件,根据上下文推测,它可能是一个智能聊天机器人的实现,可能被集成在这个工具包中,提供互动式的...
在Android开发中,工具集(Library)是一种封装了多种实用功能的代码库,方便开发者在自己的项目中快速实现特定功能,提高开发效率。本资源提供的"android工具集(lib包)"就是一个这样的类库,其核心是`utilcode`...