逮虾户!Android程序调试竟简单如斯(下)

简介: 本节讨论的是Android开发中老生常谈的程序调试。 一个开发仔的日常离不开:写BUG和解BUG,特别是多人协作的时候, 帮别人擦屁股(解Bug)的情况屡见不鲜。另外,接盘别人的项目,着手解 Bug也能帮你快速的上手项目。综上,修炼好「调试」这门技能显得尤为重要。 但是,但是感觉很多玩家还停留下无脑打印的阶段,所以有了这篇文章。

3)进入调试模式的另一种方式


大部分的同学调试都是通过点击下面这个只小虫子进入调试模式。



这种方法有个缺点就是:每次都需要重新运行程序,可能有这样的场景:把APP丢给测试 测试,然后出现了一个很稀有的BUG,此时你如果用普通的Debug模式,需要重启APP,但是 Bug不一定能够复现,这就很尴尬了。对于需要动态调试的场景,可以「直接调试正在运行的 Android进程」,点击如下所示的另一个有小虫子的图标:



然后选择要调试的包名,就可以无需重启应用直接进行调试了:



4)调试工具详解


这里把调试工具划分为如图所示的五个区域一个个讲解:



  • A区步进调试工具


图标 名称 功能描述
显示执行点 定位到当前正在调试的断点。
单步跳过 一步一步执行,遇到方法直接执行完方法,进入下一步,不会进入方法内部。
单步进入 一步一步执行,遇到方法且是自定义的方法,则进入方法内部,否则不会进入。
强制进入 遇到方法无论是自定义的还是官方类库的,都会进入方法内部。
单步跳出 跳出当前进入的方法,返回方法调用处的下一行(也意味着方法被执行完毕)。
丢弃帧 如果你在某个方法内,执行完丢弃帧,当前方法会被中断,返回方法被调用的
地方,变量的值也会重置。
执行到光标处 可以看做是临时断点,程序运行到当前光标所在行暂停。
计算表达式 支持在调试过程中,通过赋值或表达式方式修改任意变量的值。

!!!注意:上面的执行到光标处是有个前提的:中途没有断点,如果你想强制执行到 光标处的话,你需要「Force Run to Cursor」,你可以通过下述两种方式进行操作:


  • 1.光标处右键,选中「Force Run to Cursor」,如图:



  • 2.使用快捷键:Ctrl + Alt + F9。


计算表达式(Evaluate Expression)


非常实用,可以动态地查看和修改任意变量得值,除了上面在调试窗口点击计算器图标可以打开外,


你可以在D区点击某个变量右键打开。演示下修改某个变量得值:



修改完后,点击Evaluate,结果如下:



你也可以在这里直接查看变量的值,示例如下:



同样点击Evaluate,结果如下:



  • B区控制调试工具


图标 名称 功能描述
继续程序运行 程序运行到某个断点暂停,如果有下一个断点,点击后跳到这个断点,
没有的话,程序则继续运行。
暂停程序运行 暂停程序运行。
终止程序运行 终止程序运行。
查看断点 可以查看所有的断点,管理与断点配置
禁用所有断点 切换所有断点的状态(启用/禁用),禁用后,程序就不会触发断点。
获得线程堆栈 显示线程的相关信息
恢复布局 恢复到原始布局
设置 调试的相关配置,比如是否显示执行方法后的返回值


  • C区帧调试窗口


这里的帧指的是:堆栈帧,一种用于「存储数据」和「部分过程结果」的数据结构; 每次调用方法在堆栈中都会占用一部分内存,单位是,随着方法调用而创建。 每个堆栈帧中包括了:「传入参数」、「返回地址」、「局部变量」以及「对程序调试提供支持的信息」。一个线程包括多个堆栈帧。



查看工具那里可以以上下顺序切换的方方式查看帧(鼠标直接点击也可以),最右侧的漏斗图标 点击后可以过滤掉:「非本应用的帧」。另外,你还可以右键堆栈帧,添加「步进过滤器」、 「导出线程」或「自定义线程显示」。


  • D区变量区


在这个区域可以看到堆栈帧中当前所有的数据(方法参数、本地变量、实例变量)。 右键某个变量,可以进行「设置\复制变量值」,「跳转到变量在代码中的位置」等操作。 一个常用的操作:选择**「Add to Watches」**,单独监视这个变量的变化。


  • E区监视窗口


除了前面这种右键添加监视的方法外,你还可以直接在E区点击「+」进行添加。



不止监控变量,还支持监控表达式,比如上面的i+1。 关于Android Debug调试的基本操作大概就这些,多去实战中历练巩固吧!


3.Android Wifi 无线调试


其实还是要先电脑这个也非常简单,安装一个「ADB WIFI」的插件,安装后重启:



然后把APP的调试模式为「Usb Device



手机连接电脑,依次点击AS的菜单栏:「Tools」->「ADB USB TO WIFI 」,然后左下角会出现:



一般来说,要扫描好久,建议自己看下手机ip,然后通过adb命令进行链接,示例如下:


adb connect 10.1.7.200:5555
# 出现下述信息代表连接成功:
connected to 10.1.7.200:5555


连接成功后就可以拔掉数据线,进行无线调试了。


4.利用Network Profiler抓包


Android Profiler是AS 3.0后引入的性能分析工具,而Network Profiler是其中一个用于网络分析的工具, 利用它我们直接抓包,而不需借助第三方的抓包工具(比如Charles)进行分析调试。 比较简单,界面如下:



利用它可以进行很方便的抓包操作。


关于Android程序调试的东西肯定不止这些,上述的算是基本功吧。 有更多调试技巧欢迎在评论区留言~谢谢


参考文献:




相关文章
|
6月前
|
设计模式 算法 前端开发
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
|
3月前
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
87 0
|
5月前
|
安全 Java Android开发
05. 【Android教程】Android 程序签名打包
05. 【Android教程】Android 程序签名打包
61 1
|
3月前
|
Ubuntu Android开发
安卓系统调试与优化:(一)bootchart 的配置和使用
本文介绍了如何在安卓系统中配置和使用bootchart工具来分析系统启动时间,包括安装工具、设备端启用bootchart、PC端解析数据及分析结果的详细步骤。
189 0
安卓系统调试与优化:(一)bootchart 的配置和使用
|
5月前
|
安全 API Android开发
Android打开USB调试命令
【6月更文挑战第20天】
186 1
|
4月前
|
Oracle Java 关系型数据库
Android studio 安装以及第一个程序
Android studio 安装以及第一个程序
125 0
|
5月前
|
Java Android开发
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
141 0
|
5月前
|
安全 网络协议 网络安全
程序与技术分享:Android应用安全之数据传输安全
程序与技术分享:Android应用安全之数据传输安全
|
6月前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结
|
6月前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
63 2