AndroidStudio Debug调试

702 阅读4分钟

debug作用

Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。

作为一个程序员,Debug调试技能是必不可少的,正好Android Studio也为我们提供了强大的Debug功能。所以我们今天就来好好学习一下AS为我们提供的调试功能。

单步调试区

1629005617(1).png

  1. 辅助模式:Show Execution Point(快捷:Alt+F10)

(1)点击按钮会,图标将定位到正在调试的光标位置.

1629005482.png

  1. Stem Over步过 (快捷:F8)

(1)一步一步的往下往下执行,如果有一行有方法了,则不会进入方法. (2)常用于调试过程中不想进入调用方法情况.

1629006088(1).png

1629439455(1).png

  1. Step Into步入(快捷:F6)

(1)一步一步往下走,如果这一步有方法则进入方法内部.

(2)一般进入自定义方法中,不会进入官方类库方法.

1629006910(1).png

673646e34171ad6645bc7b7e499c106.png

  1. Force Step Into 强制步入(快捷:Alt+Shift+F7)

(1)可以进入官方类库.

(2)帮助我们学习和查看JDK源码. 1629007939(1).png

  1. Setp Out步出(快捷:F7)

(1)从方法内退出到方法调用处.

(2)调试时,有时候,调到不想查看的方法体,这时候可以使用步出.

1629011317(1).png

  1. Drop Frame回退断点

(1)则返回到当前方法被调用处,并且所有上下文变量的值也恢复到该方法未执行时的状前的调用处. (2)当想重新调用方法体在执行时,不用重新启用Debug,可以使用回退方式执行.

1629011218(1).png

  1. ### Run to Cursor运行到光标处(快捷:Ctrl+R)

(1)使程序运行到光标处,而程序不需要断点. (2)假如我们现在在第8行有断点,第10行有断点,目前程序停留在第8行断点上,我们将光标定位到第9行,单击该按钮,程序将跑到第9行.

1629012048(1).png

  1. ###Evaluate expression计算表达方式(快捷:Ctrl+U) (1)设置变量,在计算机表达式的框里,可以改变变量的值,这样就可以方便去调试其他值的情况。

1629012701(1).png

断点管理区

1629029116(1).png

  1. Return(重新运行)

1629029156(1).png

(1)点击该按钮会停止目前的应用,并且重新启动.换言之,就是你想要重新调试时,可以使用该操作,嗯,就是重新来过的意思.

  1. Resume Program(恢复程序)

(1)跳转到下一个断点处,可以理解为下一个断点;如果没有断点,则运行结束;

1629029302(1).png

3.### Stop(停止) (1)结束调试,结束运行。

1629029534(1).png

  1. View BreakPoints(查看断点)

单击该按钮将会进入断点管理页面,在这里你可以查看所有断点,管理或者配置断点的行为,如:删除,修改属性信息等...

1629029684(1).png

  1. Mute BreakPoints(静止断点)

(1)该按钮用来禁用/启动所有断点,假如我们在某个断点处得到了我们想要的结果,并不想看其他后续断点可以点击该按钮禁用所有断点,然后程序会正常执行结束。

1629029952(1).png

断点分类:

  • 条件断点 (1)右键单击断点处,可以进入断点的条件。 (2)通过断点条件,满足断点条件时,才停在断点处,否则直接运行。

1629027920(1).png

  • 多线程调试 (1)多线程调试,需要挂起级别为Thread。

1629028088(1).png

  • 日志断点 调试的时候更多的是打印日志定位异常代码,缩小范围之后再使用断点解决问题;所以经常做的事情就是在代码里面添加日志信息,输出函数参数,返回信息,输出我们感兴趣的变量信息等。但是这样做的问题在于我们需要重新编译运行程序,并且添加了很多无谓的代码且不好管理,这个时候我们可以使用日志断点;该类型的断点不会使程序停下来,而是在输出我们要它输出的日志信息,然后继续执行。

1629030667(1).png

1629030980(1).png

  • 异常断点

在有些情况下,我们只对某些特定的异常感兴趣,或者我们只对异常感兴趣;我们希望只要程序发生异常程序就能断下来;这好像保存现场一样,这样就会留下的线索比较多,可以使我们快速的找到问题得根源。

1629029684(1).png

首先我们添加一个异常断点,单击:

1629031570(1).png

1629031869(1).png