[Android Studio 权威教程]断点调试和高级调试

[Android Studio 权威教程]断点调试和高级调试有人说Android的调试是最坑的,那我只能说是你不会用而已,我可以说AndroidStudio的调试是我见过最棒的。好了开始写一个简单的调试程序,我们先来一个for循环for(inti=0;i<10;i++){//获取当前i的值intselector=i;//打log查看当前i的值(此步多余,实际开发请忽略)Logger.e("fo

大家好,又见面了,我是你们的朋友全栈君。

有人说Android 的调试是最坑的,那我只能说是你不会用而已,我可以说Android Studio的调试是我见过最棒的。


好了开始写一个简单的调试程序,我们先来一个for循环

for (int i = 0; i < 10; i++) {
//获取当前i的值
    int selector = i;
    //打log查看当前i的值(此步多余,实际开发请忽略)
    Logger.e("for当前的i的值:" + i);
    //调用方法
    stepNext(i);
}

设置断点(点击红点位置添加或取消断点)

这里写图片描述

点击debug模式运行

这里写图片描述

查看调试面板

这里写图片描述

一、简单调试


1. step over:一步步往下走

这里写图片描述

当前程序运行的位置,我们看到i的值已经在程序代码中展示出来了,黄色的代码处,这个是AS的功能,对于我们调试来讲,这简直是非常大的福利了。

这里写图片描述

点击单步调试按钮或按快捷键F8,看看效果。这里我们看到selector变量的值已经出来了selector:0,我们在看看黄色位置i的当前值是0。

这里写图片描述

这时我们继续F8,我们切换到logcat查看日志,我打印出的i的值是0,

这里写图片描述

我们在切回道Debugger面板,可以看到Variables显示面板中,有i的值是0,selector的值是0。以及我们可以看到Frames控制面板中可以显示出当前程序的位置在:onCreate():28,第28行。

这里写图片描述

2. step into:看到方法往里走

比如我们的for循环当中调用了一个stepNext(int i)方法,当我们走到这里想看看这个方法里面的运行过程的时候我们可以这样,当走到这个方法的时候我们可以按下F7,或者如下图的图标。

这里写图片描述

这时就走到了stepNext方法当中。

这里写图片描述

在这里打印了一个log,我们再按一下F8我们来看看Logcat, 这里我打印的log都是为了做教程用,调试我们就不用打log了直接看显示面板就OK了

这里写图片描述

3. force step into :所有方法看完整

这个是可以看到你所调用的所有方法的实现会让你跟着它走一遍,研究源码使用非常方便

这里写图片描述

4. step out :有断点下一个,走完断点继续走

这里如果我们的一个流程当中,包括调用的方法,如果有断点走到下一个断点,如果没有断点,而是在一个调用的方法当中,会跳出这个方法,继续走。

这里写图片描述

这里理解比较难,举个例子:
这里写图片描述

(上图)我现在程序位置在第一个断点位置(24行),我调用的stepNext方法中也有一个断点,此时我按下step out按钮会走到stepNext中的断点处(39行)我此时如果再按一下step out 会走到stepNext方法的调用出的下一个可执行代码(30行)

这里写图片描述

(上图)如果我现在程序位置在stepNext的方法中,如果我此时按下step out,会走到stepNext方法的调用出的下一个可执行代码(30行)

5. run to Cursor :下个断点我们见

这里的意思就是说,会很快执行到下一个断点的位置,而且可以静如任何调用的方法

这里写图片描述

二、高级调试


1. 跨断点调试

如果我们设置了多个断点,现在我们需要直接跳转到下一个断点,那么直接点击下图就可以了

这里写图片描述

2.观察变量

如果我们想观察1个或者几个变量的值的变化,如果我们在Variables显示面版中观察如果我这里有太多太多的自定义变量和系统变量了,那么就难观察了,我们可以做如下操作:
点击Watches,点击+号,然后输入变量的名称回车就OK了,而且会有历史记录哦

这里写图片描述

如果变量名比较长我们可以这样:
选择[Variables]中的变量名然后点击[右键],选择[Add to Watches],然后Watches面板中就有了

这里写图片描述

3.设置变量的值

在程序中有很多的条件语句和循环语句,调试也是比较耗时的,我们可以通过快速设置变量的值来加快调试速度,我们可以做如下操作:
选择[Variables]中的变量名然后点击[右键],选择[Set Value..]或者选择之后直接F2(如上图)(下图为Variables面板)

这里写图片描述

4.查看断点

这里写图片描述

点击之后我们可以看到所有的断点,以及位置代码,也可以设置一些属性
这里写图片描述

5.停止调试

要注意的是这里的[停止调试]不是让程序停止,而是跳过所有调试
这里写图片描述

到这里我们的Android Studio的断点调试和高级调试就完毕了。


有兴趣的童鞋可以关注我的Blog,我的专栏会持续更新Android Studio 教程,以及2015 I/O大会上的NDK的配置和编译,我也全部会分享给大家。
并且我收到了CSND 的讲师邀请,后期我会把这些Android Studio的使用教程录制成视频发布在CSDN学院。


/** * -------------- * 欢迎转载 | 转载请注明 * -------------- * 如果对你有帮助,请点击|顶| * -------------- * 请保持谦逊 | 你会走的更远 * -------------- * @author zsl * @github https://github.com/yy1300326388 * @blog http://blog.csdn.net/yy1300326388 */
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143384.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 真正的学懂三极管入门篇(经典)「建议收藏」

    真正的学懂三极管入门篇(经典)「建议收藏」______________________________________________________________________________________________________________________________________不要让温床称为埋葬你的坟墓!要有危机意识,忧患意识,要为明天考虑!禁忌:安于现状,不求上进,不懂得学习,不能恰当

  • 第五章 ,springboot 日志框架

    第五章 ,springboot 日志框架第五章 ,springboot 日志框架

  • Modelsim license破解中一个不可省略的步骤

    Modelsim license破解中一个不可省略的步骤安装modelsim没有一次顺利的。这一次是彻底搞清楚了.我安装的版本是modelsimse1-6410.1c,操作系统是win1064位.安装完了,按crack的说明去破解,总出现license问题.解决的办法是改变。安装目录中win64下面mgls.dll和mgls64.dll的只读属性。然后再重复一遍crack指导的方法。成功破解…

  • android之cannot convert from Fragment1 to Fragment

    在写一个音乐播放器的时候,用到了fragment,结果在需要返回Fragment的方法里面,无法将Fragment1(Fragment的子类)强制转换成Fragment,很是纳闷,我是参照一个开源代码来做的,源码里面很正常,我这里却报错,后来才发现,是对包的导入出现了差错,在Fragment1中导入的是android.app.Fragment而在出错的那个类里面是用android.su

  • 汇编指令速查「建议收藏」

    汇编指令速查「建议收藏」指令功能AAA调整加AAD调整除AAM调整乘AAS调整减ADC进位加ADD加AND与ARPL调整优先级BOUND检查数组BSF位右扫描BSR位左扫描BSWAP交换字节BT位测试BTC位测试求反BTR位

  • 【原创】纯干货,Spring-data-jpa详解,全方位介绍。

    【原创】纯干货,Spring-data-jpa详解,全方位介绍。本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。如果需要了解该框架的入门,百度一下,很多入门的介绍。在这篇文章的接下来一篇,会有一个系列来讲解mybatis,这个系列从mybatis的入门开始,到基本使用,和spring整合,和第…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号