`
- 浏览:
56651 次
- 性别:
- 来自:
长沙
-
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 Java应用程序安装、调试工具,部分功能可以在google提供的Android SDK开发包里面的DDMS(Dalvik Debug Monitor Service (DDMS) Tool)找到官方的实现。DDMS功能很强大,但功能过于繁多,...
含Android 反编译 回编译 工具 最新apktool jar查看器jdgui Smali2Java dex2jar 签名signapk Smali2JavaUI AXMLPrinter2 等工具.... 直接调试破解之法->第一步:使用apktool来破解apk java -jar apktool_2.0.0rc4....
SwissArmyKnife是一个方便调试的android UI的工具。可以直接在android设备屏幕上显示控件的相关信息。3.x版本对根View没有任何要求,可以是任意类型的view。3.x需要弹窗权限。由于时间有限,暂未兼容Android5.0以下...
充分利用Android的特性 应用程序发布和分发的进阶话题 附录共7个部分 附录还包含了Android开发常用工具 调试桥和SQLite 的使用指南 《Android移动应用开发 第3版 卷Ⅱ:提高篇》不仅适合Android应用程序开发人员...
它提供了完整的Android开发工具集,包括Android SDK、模拟器、代码编辑器、性能分析器、版本控制系统等,帮助开发者高效地进行Android应用的开发、测试和调试。 在下载Android Studio之前,我们需要做好以下准备...
软件开发设计:PHP、QT、...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
Android默认只有toolbox工具集,调试的时候很多命令不能用,将busybox拷贝到system/bin下,就可以使用busybox命令集了
充分利用Android的特性 应用程序发布和分发的进阶话题 附录共7个部分 附录还包含了Android开发常用工具 调试桥和SQLite 的使用指南 《Android移动应用开发 第3版 卷Ⅱ:提高篇》不仅适合Android应用程序开发人员...
内容简介 Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。...丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件
APK改之理(APK IDE)是一款可视化的、易用的、快捷的、一体化的安卓APK修改工具,集成了ApkTool、Dex2jar、JD-GUI等Apk修改工具,集Apk反编译、Apk查壳、加密解密、Apk调试分析、Apk打包、Apk签名,支持语法高亮的...
实用Android开发工具和资源精选 APK权限大全 - Android必懂知识 最无私的Android资料(书籍+代码)分享[总结] Android中文帮助教程(非常合适新手入门) android程序编写及调试新手入门 大家一起学Android(Windows...
嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。 读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,...
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中文帮助文档,PDF格式,107页。 Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和... 丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件
第12章针对商业应用的需要讲解了Android的调试、测试与性能优化;第13章全面地剖析了Android的编译系统,包括编译工具、映像文件编译、SDK编译、NDK编译和目标系统的配置等;第14章分析了Android系统的启动过程;第...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...
· 丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件 Android 架构 下图显示的是Android操作系统的主要组件。每一部分将会在下面具体描述。 已上传2本: [14本经典Android...
adb驱动,支持友坚android210,4412,且支持远程网络调试!调试方法http://write.blog.csdn.net/postedit/9382733
在C/C++跨平台开发中,我们知道在Windows上可以通过VS,进行单步断点...1、The Android Native Development Kit (NDK) : 让你能在 Android 上面使用 C 和 C++ 代码的工具集。 2、CMake 外部构建工具。如果你准备只使用