Android编程: 调试方法
学习知识:Android的调试方法
====调试方法====
前提: IDE环境为Android Studio,熟悉LogCat,知道如何查看日志信息
工具: Android DDMS调试工具,一般点击一个类似爬虫的图标就可以启动该界面,进入调试模式
设备监控工具:Android Device Monitor(menu: tools->android->Android Device Monitor)
Android Device Monitor 用于查看Android设备信息,信息类别:
1.线程信息
2.HEAP内存情况
3.内存分配跟踪统计
4.网络使用情况
5.文件结构信息
6.模拟控制
7.系统运行的信息
上面的东西都是必须了解的,这些只是工具,基础的工具,会随着IDE工具的升级,变更,或是更换IDE开发环境
而变化,不作为重点关注,不过需要注意事项是调试需要重启下ADB服务,让ADB服务支持调试;重点的内容是调试的方法:
1.查看LogCat报出的栈桢信息定位问题
:针对常见错误,比如空指针,抛出异常
2.使用Log类,在关键代码位置打印日志信息进行排查
:针对常见的逻辑错误,比如忘记更新某个状态:下一个,上一个?
3.使用断点一步步勾画代码的业务流程处理走向,从而帮助理解业务出错的地方
:针对比较隐晦的问题,主要是逻辑关联性强的BUG
4.走查代码,清晰业务流程,辅助二分法、排除法定位问题代码
:这类BUG属于深藏不漏性,或偶现,或是产品软件已经发布,只能根据部分日志或反馈的问题描述、现象来定位
二分法、排除法我使用比较多,调试的时候使用它们解决问题高效、科学。举例说明下,如果你的程序
由A、B、C三个模块构成,根据日志反馈,你发现了一条异常的信息或是问题描述,可以排除不是A、C模块
输出的,那么断定由B模块引起,但是发现异常的情况,模块B中有好几处地方,这个时候就需要二分法进行范围
缩减,先把B模块的代码按照执行逻辑分成二份,排除掉一份,在把问题代码的那份继续相同的思路排除,逐步
接近问题代码!
Android编程: 调试方法的更多相关文章
- Android Studio调试方法学习笔记
(注:本人所用Android Studio的Keymap已设为Eclipse copy) 1.设置断点 只有设置断点,才好定位要调试什么地方,否则找不到要调试的地方,无法调试.(调试过程中也可以增加断 ...
- Android WebView 调试方法
调试Android WebView中的h5页面,通常就是通过alert和抓包工具来定位问题,效率低且无法直接调试样式或打断点,可谓是事倍功半.本文介绍一下我在项目中使用的新方法,能够通过chrome的 ...
- LeanCloud SDK 中秒杀70%问题的调试方法
非常多同学在LeanCloud上遇到的不少问题,事实上能够自我解决的,如今介绍一下LeanCloud上的调试方法. LeanCloud 是通过 REST API来进行前后端分离的.这意味着当出现故障的 ...
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
- android 动态库死机调试方法 .
原地址:http://blog.csdn.net/andyhuabing/article/details/7074979 这两种方法都不是我发明了,都是网上一些高手公共出来的调试方法,无奈找不到出处的 ...
- Android调试方法总结
Android程序调试过程中,通常需要在控制台或者AVD中弹出相关信息作为调试使用,以下是调试使用中会用到的Log类和Toast类的使用方法: 1.Toast Toast是在AVD上显示信息的一种机制 ...
- Android开发调试无法连接到夜神模拟器的解决方法
Android开发调试无法连接到夜神模拟器的解决方法: 一般原因是adb的版本不一致造成的!!!!!换成一样的就可以了. 在网上看到的方法,特记录下来: 1.任务管理器里看下,adb.exe以及nox ...
- 《Android编程权威指南》
<Android编程权威指南> 基本信息 原书名:Android programming: the big nerd ranch guide 原出版社: Big Nerd Ranch Gu ...
- Android动态调试so库JNI_Onload函数-----基于IDA实现
之前看过吾爱破解论坛一个关于Android'逆向动态调试的经验总结帖,那个帖子写的很好,对Android的脱壳和破解很有帮助,之前我们老师在上课的时候也讲过集中调试的方法,但是现在不太实用.对吾爱破解 ...
随机推荐
- ubuntu下,apt的参数使用,很实用呦
ubuntu下apt-get 命令参数 常用的APT命令参数 apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版 ...
- android Tab =viewpager+fragmnet
1.定义几个fragment 的subclass 如fragmentone,fragmenttwo; public class fragmentthree extends Fragment { pri ...
- jqmobi 转换语言
当第一次打开APP时,检测手机默认的语言,设置APP的语言跟手机默认一样:当点击了APP里面的设置语言的按钮,存储当前设置的语言 :关闭APP:再一次打开APP时,检测存储在APP里面的语言,转换语言 ...
- 【Linux】Zabbix + MPM + msmtp + mutt 监控MySQL + 邮件报警
Zabbix部署参考博文 http://blog.sina.com.cn/s/blog_5611597901017oe0.html MPM安装配置参考博文和MPM官网下载地址 http://blog ...
- MySQL安装图文教程
下载 1.下载地址: http://www.mysql.com/downloads/ 2.下载图解 下载社区版本就可以,社区版里有我们的想要的几乎全部功能.只不过 商业版的mysql会提供一定高级的解 ...
- .NET常用类库知识总结
常用类库之.NET中的字符串 字符串的特性 1.不可变性 由于字符串是不可变的的,每次修改字符串,都是创建了一个单独字符串副本(拷贝了一个字符串副本).之所以发生改变只是因为指向了一块新 ...
- c#桌面小软件
这是以前练习时用c#做的桌面小软件,今天回顾下. 这是设计界面 可以看出该程序能够播放网络歌曲及浏览新闻. 实现:歌曲来源百度API,播放WindowsMediaPlayer api地址:string ...
- Application Designer Security
This wiki page covers how to manage and restrict Application Designer security through permission li ...
- HBase分布式安装
安装HBase之前需要先安装Hadoop,因为HBase是运行在Hadoop集群上的.安装Hadoop可以参照http://www.cnblogs.com/stGeekpower/p/3307289. ...
- ThinkPHP之中的验证码的小示例
ThinkPHP之中已经封装好了验证码的调用,但是关于手册,缺失了HTML之中以及.实际操作之中的点击ajax就会刷新验证码ajax代码:现在分享一下:看客老爷们注意啦! 放大招啦!!!三分归元气-- ...