AndroidStudio 你不知道的调试技巧

AndroidStudio 你不知道的调试技巧

常见的单行断点调试这里不用多说,直接上那么你所不知道而且又特别有价值的调试技巧。

1.异常断点

在我们日常开发中或者线上出现crash都是特别常见的事情,我们都知道出现了Exception,可是每次出现crash都要去查看日志具体出现什么异常,异常出现在哪一行,这是非常头疼的问题,因为打印出现的关键堆栈信心早已被一大堆的系统日志和App日志所淹没了。我们希望的是,只要程序一出现异常,就能够断下来。AndroidStudio提供了异常断点,可以在特定异常发生的那一刻,直接让整个程序停下来,断在异常的那一行代码。

操作流程是:进入Run->View BreakPoint或者用快捷键打开View BreakPoint,
在Java Exception BreakPoint 那一栏钩上Any Exception,Done。如图:

然后进入debug模式,一旦你的代码出现异常,立马保留现场,停在出现异常的代码行!!

当然你也可以指定特定的异常情况,例如NullPointerException,IllegalArgumentException等。
操作流程是:在View BreakPoint,点击左上角的,选择Java Exception BreakPoint,弹出输入框后输入你指定的异常。如图:

2.条件断点

有时我们需要在一个列表的循环中断点,但是我们感兴趣的仅仅其中某一个元素,难道我们要人肉的去从0元素调试到我们感兴趣的那个元素吗,这是不需要的,因为有了条件断点。
操作流程是:在循环里面的断点出,两个手指双击断点,出现一个小窗口,写上条件即可。

进入debug模式,直接跳到输入条件的地方。如图:

3.日志断点

我们在开发中时候经常会关键代码出打印日志,如果在调试期间某个关键点发现需要打印日志,这时重新写上打印日志代码,重新编译,大项目等待时间一般都要几分钟或者十几分钟,非常痛苦。这时我们可以用日志断点,也可以打印出日志。
操作流程:首先在输出的地方加上断点,两个手指双击断点,点击more,然后把suspend属性设置为false,然后在输入框里填上我们需要输出的日志信息,如图:

这样在debug模式下,每次代码执行到这个断点的位置,这个断点并不会停下来,而是输出我们输入的日志信息,然后继续执行。日志在控制台输出如图:

4.域断点

有时我们遇到一些非常奇怪的bug,成员变量无缘无故不知道被哪一行代码修改了,特别时在多线程的情况下,更是难以分析情况,这是我们可以用域断点,它的作用是在某一个域被访问或者修改的时候让程序断下来。非常有助于我们分析这类问题。
操作流程:在对应的域上加上断点即可。

时间: 2024-11-10 00:11:26

AndroidStudio 你不知道的调试技巧的相关文章

Android Studio你不知道的调试技巧

写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Evaluate Expression,知道条件断点;可是你听说过日志断点吗,Method Breakpoint, Exception Breakpoint 呢?还有高大上的 Field Watchpoint ?   几种不同的断点 你有关注过Android Studio旁边断点的区别吗?比如上图三个断点有什么不同?且听我一一道来. 调试基础 一般来说

VS2010中的调试技巧

这是我的博客中关于VS 2010和.NET 4发布系列的第二十六篇文章. 今天的博文将介绍Visual Studio中的一些实用调试技巧.这是受我朋友Scott Cate (他发表过几十篇很棒的VS技术文章) 启发.他最近告诉我,许多Visual Studio下的程序员,甚至一些很有经验的开发人员,都不知道这些技巧.希望这篇文章能帮你掌握这些技巧.它们都很简单,却能帮你节约大量的时间. 跳到当前光标处(Ctrl+F10) 我经常看到人们为了到达目标代码位置,而在程序中早早设定了断点,然后反复地按

javascript 调试: javascript调试技巧之:快速定位

赶紧总结一下javascript的调试技巧,这次首先是"快速定位"篇.快速定位,其实就是快速定位程序的错误,所以也算是调试.这个在实际的码代码时往往比较实用.大多数情况下,你的js代码不多(少于1000行),只要能迅速发现代码的错误,往往不用复杂的调试.关于常用的快速定位方法,我总结了一下几点,欢迎大家补充.1. 使用alertalert其实比较实用.本地调试中,在合适的位置写alert,打出来一些变量,虽然比较土,但是往往事半功倍!另外有一个alert技巧,想看看一个对象中的属性和它

C++编程语言的四个调试技巧

1.调试标记 适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef和#endif进行管理.当程序最终调试完成后,只需要使用#undef标记,调试代码就会消失.常用的调试标记为DEBUG, 语句序列: #define DEBUG#ifdef DEBUG调试代码#endif 2.运行期间调试标记 在程序运行期间打开和关闭调试标记.通过设置一个调试bool标记可以实现.这对命令行运行的程序更为方便.例如下面代码: #include<iostream>#include &

.NET程序调试技巧(一):快速定位异常的一些方法

  这篇文章主要介绍了.NET程序调试技巧(一):快速定位异常的一些方法,本文讲解了定位本机异常.在客户环境定位.net程序异常两方面的内容,需要的朋友可以参考下 作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重要的.有句话叫"发现问题是解决问题的一半. 本文讲述就快速定位异常(专指.NET程序异常)的方法.包括在本机定位异常,在客户环境定位.n

14个你可能不知道的JavaScript调试技巧

以更快的速度和更高的效率来调试JavaScript.熟悉工具可以让工具在工作中发挥出更大的作用.尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug.文中已经列出了14个你可能不知道的调试技巧,但是可能需要你牢记在心,以便在下次需要调试JavaScript代码时使用!  1. debugger  除了console.log, debugger是我们最喜欢.快速且肮脏的调试工具.执行代码后,Chrome会在执行时自动停止.你甚至可以把它封装成条件

调试技巧之调用堆栈

简单介绍 调试是程序开发者必备技巧.如果不会调试,自己写的程序一旦出问题,往往无从下手.本人总结10年使用VC经验,对调试技巧做一个粗浅的介绍.希望对大家有所帮助. 今天简单的介绍介绍调用堆栈.调用堆栈在我的专栏的文章VC调试入门提了一下,但是没有详细介绍. 首先介绍一下什么叫调用堆栈:假设我们有几个函数,分别是function1,function2,function3,funtion4,且function1调用function2,function2调用function3,function3调用

Android 反调试技巧之Self-Debuging/proc 文件系统检测、调试断点探测

本文讲的是Android 反调试技巧之Self-Debuging/proc 文件系统检测.调试断点探测, 首先,我们来看看Bluebox Security(一家移动数据保护的公司)所描述的反调试方法.gDvm是一个类型为DvmGlobals的全局变量,用来收集当前进程所有虚拟机相关的信息,其中,它的成员变量vmList指向的就是当前进程中的Dalvik虚拟机实例,即一个JavaVMExt对象.以后每当需要访问当前进程中的Dalvik虚拟机实例时,就可以通过全局变量gDvm的成员变量vmList来

iOS调试技巧-断点调试

Condational Breakpoints(条件断点) 普通断点只要执行到断点所在行就会停止程序,但是有时候我们想当满足一定条件时才停止程序.这个调试技巧在当你想要捕获一个循环中的变量的特定值或者一些不常发生的情况时是非常有用的,而不用你每次迭代都停止来查看. 怎样开启条件变量? 1.添加一个普通断点 2.右键点击断点选择Edit Breakpoint 3.打开断点编辑器,你可以在这里设置断点条件(以及一些其他的断点设置),设置好之后就可以见证奇迹了. 更多断点条件使用,请看iPhone6备