转载地址:http://blog.csdn.net/huangxiaominglipeng/article/details/53100811

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


下面会将debug模式和Attach模式的断点调试

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

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

点击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的断点调试和高级调试就完毕了。

Attach模式调试

等等!先别着急翻页,本期还有最后一个压轴的技术点要分享给大家。 
想象一下下面的场景:你的APK如果已经运行在普通模式(非Debug)的情况下,你突然想Debug,而又不想重新运行浪费时间,该怎么办呢? 
普通模式下想设置断点进行调试可不可以呢? 
当然是可以的,不仅可以,这种方式已经渐渐替代了原先的方案,毕竟很方便,不是吗?那具体要怎么做呢?

一、先设置断点,再正常运行APK 
(图4.2)

二、点击Attach调试

或者像下面一样打开也是可以的

(图4.3)

即运行Run->Attach debugger to Android process 
(图4.4)

attach process到指定进程,条件触发之后就可以直接进入调试模式。之后该怎么做不用我再说了吧?

Android studio断点调试(全在这里)相关推荐

  1. Windows系统Android Studio断点调试Android源码

    之前我都是在Windows环境下开发Android.调试代码的时候有时候要进到系统类中去断点调试代码,经常断点断不到,或者就跑飞了. 最近因为在研究一些源码,比如LayoutInflater.infl ...

  2. Android studio断点调试

    如果使用断点调试 1.判断大概哪个地方出现了问题 2.在怀疑的代码旁加上断点 3.点击调试运行 4.程序到断点的地方停下来,接下来我们就一步步开始即可 5.没有5了,断点调试超级方便 来个小例子感受一 ...

  3. android studio 断点调试

     3 4 5 6 7 8 alt+f8 debug时选中查看值 f8相当于eclipse的f6跳到下一步 shift+f8相当于eclipse的f8跳到下一个断点,也相当于eclipse的f7跳出 ...

  4. Android Studio系列(二)使用Android Studio开发/调试整个android系统源代码(不定时更新)

    本文是以源码中development/tools/idegen/README作为指导文档,给出了使用Android Studio导入Android源码的方法步骤. 环境: Ubuntu 12.04,o ...

  5. Android Studio eclipse 调试技巧

    如上图设置多个断点,开启调试.想跨断点移动到下一个断点,点击如下图1箭头,程序将运行一个断点到下一个断点之间需要执行的代码.如果后面代码没有断点,再次点击该按钮将会执行完程序.点击箭头2指向的按钮,可 ...

  6. android studio 热部署,Android Studio 你不知道的调试技巧

    原标题:Android Studio 你不知道的调试技巧 (点击上方公众号,可快速关注) 来源:伯乐在线专栏作者 - weishu http://android.jobbole.com/83282/ ...

  7. android studio 设备调试及Logcat查看

    文章转载自:http://www.cnblogs.com/apaojun/p/4283944.html 现在android的开发工具基本上都改用android studio而慢慢弃用eclipse了, ...

  8. android开发板只有网口和串口如何使用android studio进行调试

    android开发板只有网口和串口如何使用android studio进行调试 1.要先准备一条串口线,或者串口转usb的线,用于在pc端与开发板端建立连接. 2.要下载一个在pc端运行的超级终端,我 ...

  9. Android studio来调试小米盒子和百度影棒

    前段时间想用Android studio来调试小米盒子和百度影棒,由于小米盒子3增强版没有USB接口,所以不能通过数据线来连接.在网上找了好多资料, 基本都是说通过数据线来连接,可是没有USB接口,让 ...

最新文章

  1. [专栏]壹周技术秀(第一期)
  2. 为什么工作10年你的工资还不如新来的实习生
  3. python笔记基础-Python入门基础知识学习笔记之一
  4. jquery ajax的post、get方式
  5. 用“连接”勾勒角色:《死亡搁浅》亡人的设计及其背后的故事谜题
  6. 【好程序员笔记分享】C语言之break和continue
  7. python 改文件名字_【Python】按要求修改文件名
  8. MFC使用ADO对象开发数据库应用程序
  9. 最新版计算机应用基础,计算机应用基础课件(最新版)
  10. Qt 中大尺寸图片的处理
  11. mjs无法访问ftp文件解决
  12. Android软件开发面试题,安卓面试题库
  13. SPSS是什么?SPSS软件的功能有哪些?
  14. KUDU和IMPALA的结合使用
  15. 鼓包精灵2代的清灰与电池问题处理
  16. 2JS-操作BOM对象
  17. c语言scanf()的返回值
  18. 模拟信号和数字信号讲堂(一),模拟信号和数字信号之模拟信号详解
  19. STM32 芯片引脚的顺序说明
  20. UE4的.pak文件的加密和签名

热门文章

  1. Springboot项目结构浅析
  2. Java关键字——final的用法
  3. php 获取内容页图片,织梦CMS如何从列表页获取内容页的图片
  4. linux系统安装与初用
  5. Python程序员面试必备常用问题答案及解析
  6. 将Myeclipse非maven项目,导入到IDEA
  7. [文摘20071224]七条不可不知的生存法则
  8. 常用的几个PHP加密函数
  9. 上传RNA-seq数据到NCBI GEO数据库
  10. python基础3——运算符