您的位置:首页 > 移动开发 > Android开发

AndroidStudio调试 | Android权威编程指南(第二版)

2017-04-02 15:09 471 查看
参考博文:点击查看

一、异常与栈跟踪

1、程序崩溃

程序崩溃后,控制台输出如下图:



该异常报告首先告诉我们最高级层的异常及其栈追踪,然后是导致该异常的异常及其栈追踪,不断追溯直到找到一个没有原因的异常,这个没有原因的异常往往是解决问题的关键,也就是自己程序中出现的问题。单击错误的蓝色部分,AndroidStudio会自动定位到程序出错的地方。

2、运行异常

应用没有按照预期的状态运行,也就是运行异常。例如,点击按钮是,应用无反应。由于没有抛出异常,这类问题比较难解决。此时,需要设法跟踪并找出问题。

1)记录栈跟踪的诊断性日志

Log.d(String,String,Throeable)方法,添加日志输出语句,来记录并输出整个栈跟踪日志,可看出在那些地方调用了。作为参数传入方法的异常并不一定是我们捕获的异常,可创建一个新的异常方法,把它作为不抛出异常对象传入该方法

2)设置断点调试

断点会在断点设置的前一行代码处停止运行,然后可以逐行检查代码,看看程序

的执行。调试运行

详细调试步骤

设置好断点,运行的时候选中debug模式调试。运行后可在控制台查看详细信息





step over:


程序向下执行一行,如果当前行是一个方法的调用,则方法执行结束后程序执行下一行,不进入方法内部执行。


step into:


程序向下执行一行,如果当前行为自定义方法,则进入方法内部继续执行,如果是类库中的方法则不会进入方法内部。


force step into:


程序执行下一行,如果当前行有方法,全部跳入到方法内部继续执行。方便追踪源码。


step out :


如果有断点走到下一个断点,如果没有断点,而是在一个方法中,跳出该方法,继续走。


drop frame:

中断执行,并返回到方法执行的初始点,在这个过程中该方法对应的栈帧会从栈中移除。换言之,如果该方法是被调用的,则返回到当前方法调用处,并且所有上下文变量也回复到该方法未执行时的状态。


Run to cursor:


可以忽视已经存在的断点,跳转到光标所在处


Resume Program

恢复应用的含义,

1、在应用暂停状态下,点击按钮恢复应用运行。

2、如果设置了多个断点,可直接运行到下一个断点。



Stop 停止调试

对于普通JAVA项目,点击该按钮意味着推出调试模式,但应用还会继续执行。在Android项目中,点击该按钮,则意味着app结束运行。



查看断点

点击该按钮后可以查看到设置的所有断点,以及位置代码。可以进行相关的设置



观察变量

把需要观察的变量通过Add to Watched添加到观察区,可以在观察区看到该变量值得变化。选中变量名然后点击右键,选择Add to Watched即可。



设置变量的值

对于程序中循环语句调试比较耗时,可通过快速设置变量值加快调试速度。选中变量名然后点击右键,选择Set Value…

二、Android特有调试工具

Android Lint 是Android应用代码的静态分析器(static analyzer),无需代码运行就能够检查代码错误的特殊程序。由于Android Lint对Android框架知识的掌握,Android Lint深入检查diamagnetic,找出编译器无法发现的问题。

查看项目中所有潜在问题,选择Analyze—–>Inspect Code..菜单项手动运行Lint



然后选中要检查的内容,点击OK后,检查开始。检查结束后,可以看到Lint列出了所有的问题。点击某一项可以查看详细的内容。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 调试