android studio学习----调试---断点调试

Android Studio调试其实也非常方便,一般问题直接通过AS的DDMS的Logcat就可以搞定。AS支持类似Eclipse的DDMS的所有功能。这里要说的是疑难问题的调试方式,即断点调试。

首先先编译好要调试的程序。

如上图2所示在行号处点击设置断点。然后如1所示点击开启调试会话。

如上图所示,IDE下方出现Debug视图,1指向的是现在调试程序停留的代码行,2区域是程序的方法调用栈区。在这个区域中显示了程序执行到断点处所调用过的所用方法,越下面的方法被调用的越早。由此顺序想必有些Android深入功底了解一点Android系统启动流程的就知道这几个方法咋回事,怎么到Activity的onCreate的。哈哈,说到系统了。不扯了。3是一些调试按钮,快捷键放在上面直接会显示。4和5是一些变量观察区。

上图中:

点击1指向的按钮,程序向下执行一行,如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行。

点击2指向的按钮,程序向下执行一行。如果该行有自定义方法,则运行进入自定义方法(不会进入官方类库的方法)。

点击3钮在调试的时候能进入任何方法。

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

点击5指向的按钮后,你将返回到当前方法的调用处重新执行,并且所有上下文变量的值也回到那个时候。只要调用链中还有上级方法,可以跳到其中的任何一个方法。

如上图设置多个断点,开启调试。想跨断点移动到下一个断点,点击如下图1箭头,程序将运行一个断点到下一个断点之间需要执行的代码。如果后面代码没有断点,再次点击该按钮将会执行完程序。点击箭头2指向的按钮,可以查看你曾经设置过的断点并可设置断点的一些属性,如下图所示。调试开始后,在Variables区域可以给指定的变量赋值(鼠标左键选择变量,右键弹出菜单选择setValue…)。这个功能可以更加快速的检测你的条件语句和循环语句。点击箭头3加号或者在调试的代码变量上右键添加watcher即可查看跟踪变量值。

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

以上便是AS的一些调试使用技巧。

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

先编译好要调试的程序。

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.tuicool.com/articles/UJRj6nv

Evaluate Expression

这个功能非常实用,可以在断点处直接进入一个求值环境,在这里你可以执行任何你感兴趣的表达式;如下图:

比如在断点处有一个对象 object ,如果你要查看它的某个属性很简单,在Debug窗口就能看到,但是如果你想要执行它的某个方法看看结果是什么呢?借助这个可以实现。当然它的功能远不止这么多,相当于直接进入了一个 REPL 环境,非常实用。忘了说了,快捷键 Alt + F8 :P

条件断点

假设你的断点在一个列表的循环里面,可是你只对这个列表的某一个元素感兴趣,只想在遇到这个元素的时候才断下来;你是一直人肉 F9 直到满足条件吗?条件断点就是满足这种需求的,顾名思义,在特定条件下的断点。使用起来也非常简单,在你的断点上鼠标有件会出现一个小窗口,写上条件即可。

日志断点

很多时候我们调试的时候更多的是打印日志定位异常代码,缩小范围之后再使用断点解决问题;所以经常做的事情就是在代码里面添加日志信息,输出函数参数,返回信息,输出我们感兴趣的变量信息等。

但是这么做一个问题就是,我们添加了日志代码需要重新编译;在没有 Instant Run 之前的黑暗时代这么做是非常痛苦的,每次编译少则几十秒,多则几分钟;这样无意义的等待简直就是折磨;其实,除了热部署工具,我们还可以使用日志断点解决这个问题。

首先我们在想要输出信息的地方下一个断点;然后右键这个断点,在出现的设置框里面把这个断点的 suspend 属性设置为 False ,这样虽然叫做“断点”,但是并不会真正断下来;然后,我们在 log message 里面填上我们想要输出的日志信息。如下图(注意标红位置):

这样,每次代码执行到这个断点的位置,这个可爱的断点并不会使我们的程序停下来,而是输出我们告诉它的日志信息,然后继续执行;非常方便。

方法断点

传统的调试方式是以行为单位的,所谓单步调试;但是很多时候我们关心的是某个函数的参数,返回值;(回想一下我们使用日志的时候打印的最多的信息难道不是函数的参数和返回值吗?)使用方法断点,我们可以在函数级别进行调试;如果经常跳进跳出函数或者只对某个函数的参数感兴趣,这种类型的断点非常实用。具体使用方法有两种方式;最简单的是在你感兴趣的方法头那一行打上断点,这时候你会发现断点图标有点不一样,这就是方法断点了,如下图:

另外一种方式是通过 断点设置窗口 , 后面介绍。

异常断点

在有些情况下,我们只对某些特定的异常感兴趣,或者我们只对异常感兴趣;我们希望只要程序发生异常程序就能断下来;这好像保存现场一样,只要发生命案了(异常),第一时间保存现场,这样什么指纹之类的线索就会清晰很多,坏蛋就算想逃也是插翅难飞啊。

Android Studio给了我们这个能力!那就是 异常断点 !可以在特定异常发生的时候,直接让整个程序断下来;如果你对所有异常感兴趣,直接 Throwable 即可。

具体做法是,进入 Run -> View BreakPoints 或者使用快捷键打开断点设置窗口;如下图:

点击左上角的 :heavy_plus_sign: ,会出现一个选择框;选择 Exception Breakpoint ;然后会出现一个对话框,选择你感兴趣的异常:

Field WatchPoint

在上面我们添加异常断点的时候,点击加号的时候,有四个选项;第一个就是我们前面所说的第二种方法断点的添加方式,第三个是异常断点,那么第二个 Field WatchPoint 是干什么的呢?

有没有这样一种场景:你发现某个值莫名其妙滴不知道什么时候被谁给修改了,罪魁祸首是谁?Java虽然是值传递,但是引用也可以是值;对象全部存放在堆上面,而堆是被所有线程共享的,因此在非常复杂的场景下,你根本不知道这些共享变量被谁修改了,这样非常危险;在多线程环境下,不变性是一个很重要的特性,我们看到高并发的语言诸如 Erlang , Scala 对于这种不变性都有着某种程度的支持。

好吧,扯远了;那么我们怎么揪出这个修改我们值的捣蛋鬼呢?那就是这个 Field WatchPoint 的功能了;使用它我们可以在某个 Field 被访问或者修改的时候让程序断下来;完美解决这个问题。

下断点的方式和方法断点类似,也有两种;第一种是直接在某个字段的声明处下断点,这时候断点图标会改变,如下图:

右键这个断点我们可以进行一些设置,比如默认是被修改的时候断下来,你也可以改为每次访问这个字段就断下来。

另外一种方式是 Run -> View BreakPoint 打开设置,与异常断点类似。

远不止这么多

上面介绍了这么多给力的功能,其实还有很多细节;打开断点设置窗口(Run -> View Breakpoint`):

时间: 2024-10-08 10:32:03

android studio学习----调试---断点调试的相关文章

使用Android studio如何开展断点调试

熟悉android开发的童鞋应该对Android studio都不陌生,它是android开发中最常用的开发环境之一,在程序开发中,我们常常需要进行断点调试,那在android studio中,如何开展断点调试呢?那下面我们就一起来看看具体的方法和步骤吧. 在开展断点调试前,你需要先编译好要调试的程序,然后按照下面的步骤,开展调试工作. 1.设置断点 选定要设置断点的代码行,并在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试环节. IDE下方出现Deb

android studio下的代码调试技巧的运用

记得当初刚开始学习java的时候,每次在eclipse上遇到调试程序的时候都是敲syso+快捷键,用system.out.printLn.输出语句来调试java的程序,哈哈哈,当初感觉确实蛮方便的,后来慢慢步入到安卓,然后使用安卓版的eclipse,在安卓代码当然是要杜绝java的输出语句了,于是又用输出日志Log的几种方式来调试,偶尔还会用到吐司调试(尴尬),eclipse版本的debug模式当初没怎么用习惯,只会简单的单步调试,于是就荒废了,虽然调试起来有点麻烦,但是用顺手了也还马马虎虎,但

Zend Studio集成Xdebug断点调试详解

转自:http://www.softown.cn/post/115.html Xdebug是PHP开发中两个常用的断点调试工具之一(另一个为Zend Debugger). 现在,我们在Zend Studio中集成PHP的Xdebug模块,从而在Zend Studio中实现断点调试功能. 1.下载.安装.配置Xdebug 关于如何在PHP中安装.配置Xdebug模块,请直接参考文章PHP安装配置Xdebug模块详解. 2.Xdebug远程连接配置 想要在Zend Studio中使用Xdebug,就

Android Studio 学习 - 基本控件的使用;Intent初学

Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本控件的理解和使用上暂时没碰到太多的问题.对比之下,各种监听事件与Delphi中也相差无几. 2. 使用Intent切换Activity (1)在不同的Activity之间跳转,首先要新建一个Activity. (2)创建一个新的Layout布局文件,布局文件的命名首字母用小写字母(Android S

android studio学习----android studio断点调试

先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试. IDE下方出现Debug视图,红色的箭头指向的是现在调试程序停留的代码行,方法f2()中,程序的第11行.红色箭头悬停的区域是程序的方法调用栈区.在这个区域中显示了程序执行到断点处所调用过的所用方法,越下面的方法被调用的越早. [PS:这里如果是真机调试android程序的话:使用run->attach...  ,然后选择一个进程就行了]

android studio无线真机调试------Android

第一步:安卓机要打开开发者模式,并将手机和电脑连接到同一个局域网 第二部:在安卓机上下载一个 adb无线调试软件,并打开.这时候,软件上会显示你手机的ip和端口.比如我的是192.168.1.100:55555 第三部:进入sdk所在文件夹的platform-tools文件夹.确保其中存在adb.exe文件 第四部:在android studio的最下面用cd命令进入到platform-tools文件夹 第五部:使用adb connect 192.168.1.100:55555命令连接到手机.

Mac电脑使用Android Studio进行真机调试

第一步: 为mac电脑配置 adb 命令的环境变量,分为2小步 1.找到 Android Studio 为你安装的 SDK : 打开电脑中 Android studio 的工具的软件,在启动 Android studio 的软件的界面中,点击下方列表中的"configure"的选项.在点击列表中的"project defaults"的选项.最后点击 project structure 的选项.    随后在弹出界面的Android sdk location中,便是s

Android Studio 导入OpenCV 并调试运行face-detection例子

p { margin-bottom: 0.1in; direction: ltr; color: rgb(0, 0, 10); line-height: 120%; text-align: justify } p.western { font-family: "Calibri", serif; font-size: 10pt } p.cjk { font-family: "Droid Sans Fallback"; font-size: 10pt } p.ctl {

Android Studio 连接真机调试

以小米4为例,先将手机通过USB连接电脑,在设备管理器中确保驱动安装正确. 对手机的设置 1.设置手机为开发者模式(设置->关于手机->连续点击MIUI版本--开启成功) 2.在更多设置中找到系统安全设置--允许安装未知来源的应用 3.在更多设置中选择开发者选项,在开发者选项中同时勾选USB调试和USB安装的开关 对Android Studio 的设置: 1.在工具栏中找到app,点开后选择"Edit configurations" 2.选择其中的Target为 USB D