4.4程序调试Android系统提供了两种调试工具LogCat和DevTools,用于定位、分析及修复程序中出现的错误•4.4.1LogCat–LogCat是用来获取系统日志信息的工具,并可以显示在Eclipse集成开发环境中–功能:能够捕获的信息包括Dalvik虚拟机产生的信息、进程信息、ActivityManager信息、PackagerManager信息、Homeloader信息、WindowsManager信息、Android运行时信息和应用程序信息等4.4程序调试•4.4.1LogCat–打开方式:Window→ShowView→Other打开ShowView的选择菜单,然后在Andoird→LogCat中选择LogCat4.4程序调试•4.4.1LogCat–LogCat打开后,便显示在Eclipse的下方区域4.4程序调试•4.4.1LogCat–LogCat的右上方的五个字母表示五种不同类型的日志信息,他们的级别依次增高[V]:详细(Verbose)信息[D]:调试(Debug)信息[I]:通告(Info)信息[W]:警告(Warn)信息[E]:错误(Error)信息4.4程序调试•4.4.1LogCat–在LogCat中,用户可以通过五个字母图标选择显示的信息类型,级别高于所选类型的信息也会在LogCat中显示,但级别低于所选类型的信息则不会被显示4.4程序调试4.4.1LogCat–LogCat提供了“过滤”功能,在右上角的“+”号和“-”号,分别是添加和删除过滤器。用户可以根据日志信息的标签(Tag)、产生日志的进程编号(Pid)或信息等级(Level),对显示的日志内容进行过滤4.4程序调试4.4.1LogCat–程序调试原理•引入android.util.Log包•使用Log.v()、Log.d()、Log.i()、Log.w()和Log.e()五个函数在程序中设置“日志点”•当程序运行到“日志点”时,应用程序的日志信息便被发送到LogCat中•判断“日志点”信息与预期的内容是否一致•进而判断程序是否存在错误–Log.v()用来记录详细信息,Log.d()用来记录调试信息,Log.i()用来记录通告信息,Log.w()用来记录警告信息,Log.e()用来记录通错误信息4.4程序调试4.4.1LogCat–演示了Log类的具体使用方法1.packageedu.hrbeu.LogCat;2.3.importandroid.app.Activity;4.importandroid.os.Bundle;5.importandroid.util.Log;6.7.publicclassLogCatextendsActivity{8.finalstaticStringTAG=LOGCAT;9.@Override10.publicvoidonCreate(BundlesavedInstanceState){11.super.onCreate(savedInstanceState);12.setContentView(R.layout.main);13.4.4程序调试4.4.1LogCat•程序第5行引入android.util.Log包•第8行定义标签。标签帮助用户在LogCat中找到目标程序生成的日志信息,同时也能够利用标签对日志进行过滤•第14行记录一个详细信息,Log.v()函数的第一个参数是日志的标签,第二个参数是实际的信息内容•第15行到第18行分别产生了调试信息、通告信息、警告信息和错误信息14.Log.v(TAG,Verbose);15.Log.d(TAG,Debug);16.Log.i(TAG,Info);17.Log.w(TAG,Warn);18.Log.e(TAG,Error);19.}20.}4.4程序调试4.4.1LogCat–LogCat工程的运行结果•LogCat对不同类型的信息使用了不同的颜色加以区别4.4程序调试•4.4.1LogCat–添加过滤器•单击“+”•填入过滤器的名称:LogcatFilter•设置过滤条件为“标签=LOGCAT”4.4程序调试•4.4.1LogCat–LogCat过滤后的输入结果•无论什么类型的日志信息,属于哪一个进程,只要标签为LOGCAT,都将显示在LogcatFilter区域内4.4程序调试•4.4.2DevTools–DevTools是用于调试和测试的工具–包括了一系列用户各种用途的小工具:DevelopmentSettings、ExceptionBrowser、GoogleLoginService、Instrumentation、MediaScanner、PackageBrowser、PointerLocation、RawImageViewer、Runningprocesses和TerminalEmulator4.4程序调试•4.4.2DevTools–DevTools的使用界面4.4程序调试•4.4.2DevTools–DevelopmentSettings•DevelopmentSettings中包含了程序调试的相关选项•单击功能前面选择框,出现绿色的“对号”表示功能启用•模拟器会自动保存设置4.4程序调试•4.4.2DevTools•DevelopmentSettings选项选项说明DebugApp为Waitfordebugger选项指定应用程序,如果不指定(选择none),Waitfordebugger选项将适用于所有应用程序。DebugApp可以有效的防止Android程序长时间停留在断点而产生异常。Waitfordebugger阻塞加载应用程序,直到关联到调试器(Debugger)。用于在Activity的onCreate()函数的进行断点调试。Showrunningprocesss在屏幕右上角显示运行中的进程。Showscreenupdates选中该选项时,界面上任何被重绘的矩形区域会闪现粉红色,有利于发现界面中不必要的重绘区域。NoAppProcesslimit允许同时运行进程的数量上限。4.4程序调试•4.4.2DevToolsImmediatelydestroyactivitesActivity进入停止状态后立即销毁,用于测试在函数onSaveInstanceState()、onRestoreInstanceState()和onCreate()中的代码。ShowCPUusage在屏幕顶端显示CPU使用率,上层红线显示总的CPU使用率,下层绿线显示当前进程的CPU使用率。Showbackground应用程序没有Activity显示时,直接显示背景面板,一般这种情况仅在调试时出现。ShowSleepstateonLED在休眠状态下开启LED。WindowsAnimationScaleTransitionAnimationLightHintingShowGTalkserviceconnectionstatus显示GTalk服务连接状态。4.4程序调试•4.4.2DevTools–PackageBrowser•PackageBrowser是Android系统中的程序包查看工具,能够详细显示已经安装到Android系统中的程序信息,包括包名称、应用程序名称、图标、进程、用户ID、版本、apk文件保存位置和数据文件保存位置•进一步查看应用程序所包含Activity、Service、BroadcastReceiver和Provider的详细信息4.4程序调试•4.4.2DevTools•PackageBrowser查看ActivityLifeCycle程序的相关信息4.4程序调试•4.4.2DevTools–PointerLocation•PointerLocation是屏幕点位置查看工具,能够显示触摸点的X轴坐标和Y轴坐标•PointerLocation的使用画面4.4程序调试•4.4.2DevTools–Runningprocesses•Runningprocesses能够查看在Android系统中正在运行的进程,并能查看进程的详细信息,包括进程名称和进程所调用的程序包•Andoird模拟器缺省情况下运行的进程和com.android.phone进程的详细信息4.4程序调试•4.4.2DevTools•Andoird模拟器缺省情况下运行的进程•com.android.phone进程的详细信息4.4程序调试•4.4.2DevTools–TerminalEmulator•TerminalEmulator可以打开一个连接底层Linux系统的虚拟终端,但具有的权限较低,且不支持提升权限的su命令•如果需要使用root权限的命令,可以使用ADB工具•右图是TerminalEmulator运行时的画面,输入ls命令,显示出根目录下的所有文件夹习题:•1.简述Android系统前台进程、可见进程、服务进程、后台进程和空进程的优先级排序原因。•2.简述Android系统的四种基本组件Activity、Service、BroadcaseReceiver和ContentProvider的用途。•3.简述Activity生命周期的四种状态,以及状态之间的变换关系。•4.简述Activity事件回调函数的作用和调用顺序。