Androdi Studio断点调试

sancaiodm Adb命令与工具 2021-12-25 1633 0

      说实话现在都21年12月底了,Android Studio出来这么多年了,这软件在入职现在这公司之前我使用的次数没超过10次,之前总感觉这软件太大太卡了,每次导入项目或是启动这软件都要下载或是更新大堆的文件 ,但凡网络差一点就是磨耗几分钟,甚至有时一些文件还下载不下来,报各种错误,所以我一直莫名之很抵触这软件。

     只有为了查看从github上下载的开源项目才会用一下这软件 ,在平常的工作中我仍是用Eclipse做开发工具,第1用Eclipse有这么多年了熟悉各种配置或是快捷键,第2 工作不需要编译或是创建新的APP项目,手机方案开发绝大部分是基于Android源码修改,而Android源码或是其中的原生APP应用都不能在Andoidstudio中直接编译运行(除Launcher ,Settings几个APP外),,只要能够查看android源码与编辑代码即可,至于修改后看效果都是用Android源码的make命令集编译,所以这么多年来我一直都是用Eclipse做为开发工具,自入职这公司因当前的工作都是在公司内部开发的MMI测试软件或是老化软件中,公司的android开发人员都是用Android stuido开发后直接运行到手机上看效果,不再以修改后再make编译再push至手机内再启动app看效果模式开发。没办法只能硬着头皮用,一点一点去熟悉了解。其中Androidstudio中的断点调试功能惊艳了我,这功能是Eclipse无法代替了,下面的内容是我对Androdistudio的不全面了解的的一个记录,同时也方便像我这样对Androidstudio不了解的看完此文后对其有一个大概的了解。

    Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。

    对,是google公司基于IntelliJ IDEA开发的Android开发工具,你有可能百度[androidstudio 断点调试]找不到全面的理想的文章,本人强烈建议你去bilibili(bilibili是一个很不错的教学网站,它不光只有动漫,推荐)内搜索:IntelliJ IDEA 断点调试。两者的断点调试操作都是一样的,且视频讲得比我这里写的直观易懂。我也是通过这途径了解的Androidstudio。

   image.png

Android studio断点调试图2

image.png

我们主要说明一下

[控制按钮]

F7 跳入方法内[程序自定义的方法内,不会进入库文件或jar包等提供的方法内]

ALT+SHIFT+F7 强制进入方法内无论是自定义方法还是其它api接口方法(如查看java API内的实现,android sdkAPI方法的实现)

F8 逐行执行

SHIFT+F8 跳出当前方法,返回至上一层方法

F9 下一个断点(如只设置了一个断点则是直接往下运行)

Alt+ F9 运行至鼠标光标处停止

Drop+Frame   停止当前方法的执行,返回到当前方法被调用处,并且所有上下文变量的值也恢复到那个时候

[当前线程栈帧区]

此处的线程栈是运行从最下面处开始运行,即下面一方法调用上的方法,如图2是显示activity的oncreate 执行栈帧,很方便我们了解源码的执行逻辑

[断点管理区]

image.png

从上至下是

1 跳到下一个断点处

断点管理,此处为显示所有的断点位置。

 退出断点,这个不细说,

image.png

图3 Debug模式下的变量区域

image.png

如下图,点击变量区域的[眼镜图标],若在Watches区域点击此区域的眼镜图标则会将界面恢复至上图布局界面,

也可以在Variables区域点击你想要特别关注的变量右键选择[Add to Wathes]


image.png

5 变量值的设定

      程序中有很多的条件语句和循环语句,调试也是比较耗时的,如我的调试代码中有一个for循环且设置了index <=50,如果我按正常执行逻辑是需要循环50次才可以通过此循环,那有没有一种方式我设定index等于48或是49,只需要执行一两次就可以顺利通过此处代码,这情况google已经帮我们想到了,

我们可以做如下操作: 

在[Variables]区域中的选择你的变量名然后点击[右键],选择[Set Value..]

image.png

6 详细断点

详细断点就是在打断点的同时按住键盘[Shift]键,就会弹出针对断点的设置的详细信息界面,

[Suspend]勾选则表示运行到此断点行时,程序挂起停止往下执行 ALL表示所有线程的会停。Thread表示只有当前线程才会停[一般多用于多线程调试]

[Condition]表示只能满足你设置的条件才能挂起程序,否则不会挂起,如判断true,false,或是for循环条件等等,可根据自身需求设置

下面的各个选项不一一说明,大家可以都尝试一下,

当我们设定好条件后,橙色的断点点会变红色,

image.png


你可以在[断点管理区],单击重叠的两红圆,在弹出的界面中统一为每一个断点设置触发条件

image.png

7 方法断点

  7.1方法断点就是在方法的签名那行打上断点,方法断点图标是一个红色菱形, 方法断点会在程序进入此方法时,在方法内的第一行停下来,然后再执行F9往下执行也会在方法的最后一行停下来,如果你的方法内执行任务较多你可以采用方法断点的方式调试程序,当断点停崽方法的最后一行后,你可以去一一查看此方法内的所有变量值,

  7.2  方法断点另一个处用就是当你一个抽象方法有多个实现类时,你无法判断程序到底是调用的哪个实现方法时,你可以在接口中或是抽象类在那抽象方法上打一个方法断点,程序执行到此会自动跳到具体执行的实现方法中,

image.png

8 异常断点

如下 添加NullPointerException异常后,程序在运行中全局任意位置如发生了空指针异常,程序就在那异常代码位置挂起,这很方便大家定位异常的代码位置,当然我们可以在通过Log查看异常信息确定异常位置,

image.png

9 字段断点

字段断点就是断点打在一个变量上,当此变量的值发生改变时,程序会在变量改变的位置挂起,字段断点的图标是一个眼睛,此断点模式在开发很有用

image.png



image.png



好文推荐:

androidStudio“高级Debug”调试技巧

评论