学习知识: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编程: 调试方法的更多相关文章

  1. Android Studio调试方法学习笔记

    (注:本人所用Android Studio的Keymap已设为Eclipse copy) 1.设置断点 只有设置断点,才好定位要调试什么地方,否则找不到要调试的地方,无法调试.(调试过程中也可以增加断 ...

  2. Android WebView 调试方法

    调试Android WebView中的h5页面,通常就是通过alert和抓包工具来定位问题,效率低且无法直接调试样式或打断点,可谓是事倍功半.本文介绍一下我在项目中使用的新方法,能够通过chrome的 ...

  3. LeanCloud SDK 中秒杀70%问题的调试方法

    非常多同学在LeanCloud上遇到的不少问题,事实上能够自我解决的,如今介绍一下LeanCloud上的调试方法. LeanCloud 是通过 REST API来进行前后端分离的.这意味着当出现故障的 ...

  4. 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!

    http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...

  5. android 动态库死机调试方法 .

    原地址:http://blog.csdn.net/andyhuabing/article/details/7074979 这两种方法都不是我发明了,都是网上一些高手公共出来的调试方法,无奈找不到出处的 ...

  6. Android调试方法总结

    Android程序调试过程中,通常需要在控制台或者AVD中弹出相关信息作为调试使用,以下是调试使用中会用到的Log类和Toast类的使用方法: 1.Toast Toast是在AVD上显示信息的一种机制 ...

  7. Android开发调试无法连接到夜神模拟器的解决方法

    Android开发调试无法连接到夜神模拟器的解决方法: 一般原因是adb的版本不一致造成的!!!!!换成一样的就可以了. 在网上看到的方法,特记录下来: 1.任务管理器里看下,adb.exe以及nox ...

  8. 《Android编程权威指南》

    <Android编程权威指南> 基本信息 原书名:Android programming: the big nerd ranch guide 原出版社: Big Nerd Ranch Gu ...

  9. Android动态调试so库JNI_Onload函数-----基于IDA实现

    之前看过吾爱破解论坛一个关于Android'逆向动态调试的经验总结帖,那个帖子写的很好,对Android的脱壳和破解很有帮助,之前我们老师在上课的时候也讲过集中调试的方法,但是现在不太实用.对吾爱破解 ...

随机推荐

  1. SPSS时间序列:频谱分析

    一.频谱分析(分析-预测-频谱分析) “频谱图”过程用于标识时间序列中的周期行为.它不需要分析一个时间点与下一个时间点之间的变异,只要按不同频率的周期性成分分析整体序列的变异.平滑序列在低频率具有更强 ...

  2. 写给Node.js新手的7个小技巧

    一些我更愿意在开始就知道东西 利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有3万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中. 无论如何,对于一些刚开始使 ...

  3. PHP开发大型项目的一点经验

    一.变量 最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候.变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆.变量 ...

  4. WebApi调试中遇到的一些问题

    今天对WebApi的项目进行了一些调试,得到了一些教训,记录下来,也让大家少花些时间在这些无用功上面. (1)Fiddler 进行Post参数提交 刚开始,都是使用的Fiddler对服务进行调试,一直 ...

  5. Windows系统错误代码大全

    1 Microsoft Windows 系统错误代码简单分析: 0000 操作已成功完成.0001 错误的函数. 0002 系统找不到指定的文件. 0003 系统找不到指定的路径. 0004 系统无法 ...

  6. 发送Ajax请求获取JSON格式数据

    Aspx前端页面: <script type="text/javascript"> $(function () { $.getJSON("Ajax/TestA ...

  7. 转载:T-SQL语句大全

    一.基础 1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname 3.备份数据库 --- 创建 备份数据的 device ...

  8. 《第一行代码--Android》阅读笔记之Activity

    1.BaseActivity里面可以干什么 定义一个Context定义一个TAG 记录当前的Activity名字getClass().getSimpleName(); 2.Activity里面的几个重 ...

  9. canvas绘制文字

    绘制字体时可以使用fillText方法或者strokeText方法. fillText方法用填充的方式来绘制字符串 context.fillText (text, x,y,[maxwidth]); s ...

  10. asp.net解析请求报文

    NameValueCollection myHeader = new NameValueCollection(); int i; string strKey; string result; myHea ...