###Android 断点调试和高级调试###

 

转自:http://www.2cto.com/kf/201506/408358.htmlhtml

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


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

 
1
2
3
4
5
6
7
8
<code class = "language-java hljs " > for ( int i = 0 ; i < 10 ; i++) {
//获取当前i的值
     int selector = i;
     //打log查看当前i的值(此步多余,实际开发请忽略)
     Logger.e( "for当前的i的值:" + i);
     //调用方法
     stepNext(i);
}</code>

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

这里写图片描述

点击debug模式运行<喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCjxwPjxpbWcgYWx0PQ=="这里写图片描述" src="/uploadfile/Collfiles/20150616/20150616083835148.png" title="\" />eclipse

查看调试面板函数

这里写图片描述

1、简单调试


1. step over:一步步往下走

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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 :下个断点咱们见

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

这里写图片描述

2、高级调试


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学院。


 
1
2
3
4
5
6
7
8
9
10
11
12
13
<code class = "language-java hljs " > /**
  * --------------
  * 欢迎转载   |  转载请注明
  * --------------
  * 若是对你有帮助,请点击|顶|
  * --------------
  * 请保持谦逊 | 你会走的更远
  * --------------
  * @author zsl
  */
</code>

 

 

转自:http://www.cnblogs.com/firstcsharp/p/4333264.html

这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此。

 

先编译好要调试的程序。

1.设置断点

选定要设置断点的代码行,在行号的区域后面单击鼠标左键便可。

 

2.开启调试会话

点击红色箭头指向的小虫子,开始进入调试。

 

IDE下方出现Debug视图,红色的箭头指向的是如今调试程序停留的代码行,方法f2()中,程序的第11行。红色箭头悬停的区域是程序的方法调用栈区。在这个区域中显示了程序执行到断点处所调用过的所用方法,越下面的方法被调用的越早。

 

3.单步调试

3.1 step over

点击红色箭头指向的按钮,程序向下执行一行(若是当前行有方法调用,这个方法将被执行完毕返回,而后到下一行)

3.2 step into

 

点击红色箭头指向的按钮,程序向下执行一行。若是该行有自定义方法,则运行进入自定义方法(不会进入官方类库的方法)。具体步骤以下:

在自定义方法发f1()处设置断点,执行调试

 

 

点击

 

3.3 Force step into 

该按钮在调试的时候能进入任何方法。

3.4 step out

 

若是在调试的时候你进入了一个方法(如f2()),并以为该方法没有问题,你就可使用stepout跳出该方法,返回到该方法被调用处的下一行语句。值得注意的是,该方法已执行完毕。

3.5 Drop frame

 

点击该按钮后,你将返回到当前方法的调用处(如上图,程序会回到main()中)从新执行,而且全部上下文变量的值也回到那个时候。只要调用链中还有上级方法,能够跳到其中的任何一个方法。

4. 高级调试

4.1 跨断点调试

设置多个断点,开启调试。

 

想移动到下一个断点,点击以下图:

程序将运行一个断点到下一个断点之间须要执行的代码。若是后面代码没有断点,再次点击该按钮将会执行完程序。

4.2 查看断点

 

点击箭头指向的按钮,能够查看你曾经设置过的断点并可设置断点的一些属性。

箭头1指向的是你曾经设置过的断点,箭头2能够设置条件断点(知足某个条件的时候,暂停程序的执行,如 c==97)。结束调试后,应该在箭头1处把所设的断点删除(选择要删除的断点后,点击上方的红色减号)。

 

4.3 设置变量值

 

调试开始后,在红箭头指向的区域能够给指定的变量赋值(鼠标左键选择变量,右键弹出菜单选择setValue...)。这个功能能够更加快速的检测你的条件语句和循环语句。

 

alt+f8 debug时选中查看值
f8至关于eclipse的f6跳到下一步
shift+f8至关于eclipse的f8跳到下一个断点,也至关于eclipse的f7跳出函数
f7至关于eclipse的f5就是进入到代码
alt+shift+f7这个是强制进入代码
ctrl+shift+f9 debug运行java类
ctrl+shift+f10正常运行java类
command+f2中止运行

http://www.cnblogs.com/Bowu/p/4026117.html

相关文章
相关标签/搜索