高级调试
目标:1.介绍各种调试应用程序的方法;2.学习如何查看APP内部运行情况;3.了解APP将出现什么样的运行结果;
Eclipse Debug透视图
DDMS透视图:Devices视图(查看连接设备);模拟器控制(电话呼叫等模式);文件管理器(查看传输设备的文件);线程;堆和配置跟踪器(App内部运行);视图层次透视图(APP实际视图结构);Traceview(APP中转储文件分析);StrictMode(用于检查策略错误,发现使用户体验糟糕的设计错误).
模拟器中测试:ADT插件负责所有要用到的东西.
真实设备上调试:1:APP必须设置为可调式模式(创建调试版本即将android:debuggable=”true”,若为生产版本ADT设置为false,若手动设置则一直保留).2:将设备设置为启用USB模式(设备的开发人员选项启用USB调试).
Logcat用于查看日志消息
开发人员希望对APP运行更多的控制
Debug透视图:
在代码中设置断点,使APP运行到断点位置暂停;
检查变量值;单步执行代码;运行的APP上附加调试器;
APP从调试器断开;查看堆栈跟踪信息;查看LogCat.
DDMS透视图(查看设备上运行的APP;观察线程和内存运行情况;收集运行过程中产生的统计信息).
内存堆的检查:
Dump HPROF File:
创建HPROF文件,MAT插件会处理该文件,显示结果信息,用于查找内存泄露.
Updata Threads:(用于填充Threads选项卡,所选APP当前线程集)
用于查看线程的创建与销毁,从线程级别了解APP运行情况.
Start Method Profiling:(收集APP方法的信息,包括调用次数和计时信息)(即Traceview)
点击stop后显示:
该窗口显示方法性能分析的结果.
Stop按钮:
照相机图标:
用于捕捉当前的设备屏幕状态,功能:刷新,旋转,保存,复制.
刷新视图中的设备列表:
右边选项卡:Allocation Tracker(跟踪各部分内存分配信息)
Get后,start至这段时间的内存分配列表显示在视图中.
Emulator Control:模拟器控制台(模拟电话呼叫,SMS信息等事件),仅用于模拟器调试.
Hierarchy View透视图:(模拟器专用,查看APP视图,结构和属性)
注意:若采用后台线程可能会耗费很长时间
Pixel Perfect View:(提供放大的图像查看器,支持各个像素及其颜色)
可以将截图与其他图像叠加,进行比较,如需复制特定外观则为绝佳方式.
使用android.os.Debg类获取详细的APP跟踪信息:将在设备SD卡创建跟踪文件,文件名:basename.trace
启动跟踪方法:Debug.startMethodTracing(“basename”);
停止跟踪方法:Debug.stopMethodTracing(“basename”);
需要添加时添加,限制记录到跟踪文件的统计数据量,将此文件复制到工作站.使用SDK工具traceview(文件名的唯一参数),查看跟踪输出结果
指出各个方法的被调用者,调用频率和执行时间,线性排列,不用颜色区分,发现占用太多时间或调用次数过多的方法