返回顶部
首页 > 资讯 > 移动开发 >Android解Bug的策略和思路
  • 246
分享到

Android解Bug的策略和思路

Android 2022-06-06 12:06:15 246人浏览 薄情痞子
摘要

  现在维护和定制Android的需求越来越多,做的人也越来越多,而Google直接Release出来的源码中又有很多Bug和不合理的地方,特别是原生的应用,如Mms,Br

  现在维护和定制Android的需求越来越多,做的人也越来越多,而Google直接Release出来的源码中又有很多Bug和不合理的地方,特别是原生的应用,如Mms,Browser, Email, Contacts等。定制或做Android解决方案第一步是要修复原生的Bug以得到一个稳定的系统。   1. 仔细观察Bug的特性   了解Bug所涉及的流程和模块有哪些,以及是什么样的Bug,Exception?功能上的?还是UI/UE设计问题。针对不同的问题,可能要采取不同的手段,对于Exception要先分析Log文件,以确定产生Exception的原因;对于功能上的问题,可能要先尝试复现; 对于UI/UE的问题可能有要先找UI设计师确认是否需要修改。   2. 找出决定因素,排除次要和无关因素   分析,推敲和尝试复现以排除次要的,无关的因素和操作步骤。如果跟某些特定的数据有关,要把数据进行拆解,以把无影响的部分去掉,直到找到引起问题的特殊数据。   3. 对比   跟正常的流程进行对比,跟没有问题的版本进行对比,跟同一系列的产品进行对比,看有哪些异常和不一致的地方。   4. 单一变量原则   每次改动一个变化的东西,这样你才能清楚是因为什么产生了问题或是解决了问题。如果同时的改动有二个很难分的清是哪一个产生了作用。   5. 分而治之   通过分治的方法逐步缩小范围,先在一个模块分析,确定有问题或没问题,然后再转到其模块,先在其中一个逻辑或文件中分析,然后再到其他的,以避免盲目的乱找。   6. 模拟场景   用特殊的数据,或者修改代码来模拟Bug发生时的场景。这对复现非必现Bug时特别有用,对线程问题也很有用。   7. 定位问题的方法:经验+Log+Debugging工具   经验是要靠积累才能得来的,通常情况下对代码和流程熟悉的人定位起来快速的多; Log是指日志文件和打印这种简单粗暴的方式;调试工具是指像Eclipse和GDB等断点单步工具。通常用经验和Log来进行大范围的定位,当对流程有了一定的了解后,且已经定位到稍小的范围,如一个函数内或一个文件内时可以用工具进行断点和单步调试以精确定位。当范围很大时,如用调试工具会很慢,很难找到有效的断点,单步的话又太烦琐,很容易让人混乱和丢失思路。   8. 逆向推理和洞察力   在调试解Bug过程中逆向推理力十分的重要,因为你得到的是一个结果(Bug),而要去找到它的原因,需要推理和猜测问题可能是出在哪里。另外一个非常重要的能力是洞察力,观察Log,操作等,注意一些细微的差异,发现一些隐藏的线索等。当然,这与经验不同,不是那么容易能培养出来的!   9. 具体的方法和工具   a. 编译   很显然,要想用日志等方法,要修改源码,添加日志,要编译。整体编译Android可以用make,整体编译过一次后可以局部编译,进入到某个带有Android.mk文件的目录运行mm可以把此目录重新编译成apk, jar或so   b. 运行   编译好后,要把新编译出来的Apk或jar或so运行起来以看到不同。可以直接把apk,jar和so通过adb push 到手机中(apk到/system/app, jar到/system/framework, so到/system/lib)。或者用mm snod命令重新生成system.img,然后再使用(模拟器可以这样做)。   c. 调试工具   Apk用Eclipse可以直接调,前提要能编译过   jar也要用Eclipse来调试   so因为都是Native C/C++代码,所以要用GDB来调试。手机中运行gdbserver,PC上用gdb调试编译出来的symbols/下面的库,gdb和gdbserver用过手机中指定的端口来通信。


--结束END--

本文标题: Android解Bug的策略和思路

本文链接: https://lsjlt.com/news/28792.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android解Bug的策略和思路
      现在维护和定制Android的需求越来越多,做的人也越来越多,而Google直接Release出来的源码中又有很多Bug和不合理的地方,特别是原生的应用,如Mms,Br...
    99+
    2022-06-06
    Android
  • Android生存指南之:解Bug策略与思路问题的详解
    现在维护和定制Android的需求越来越多,做的人也越来越多,而Google直接Release出来的源码中又有很多Bug和不合理的地方,特别是原生的应用,如Mms,Browse...
    99+
    2022-06-06
    Android
  • 计算机网络中路由策略和策略路由的区别有哪些
    这篇文章主要介绍计算机网络中路由策略和策略路由的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区别:路由策略是通过修改路由表的路由条目来控制数据流量的可达性;而策略路由是通过用户制定的策略进行转发,且该策略...
    99+
    2023-06-14
  • Android分包MultiDex策略详解
    1.分包背景 这里首先介绍下MultiDex的产生背景。 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加...
    99+
    2022-06-04
    详解 策略 Android
  • JavaHibernate中的查询策略和抓取策略
    目录OID查询对象导航检索HQL检索QBC检索SQL检索抓取策略立即抓取延迟抓取批量抓取延迟加载总结Hibernate是一个流行的ORM框架,可以帮助开发人员通过面向对象的方式来访问...
    99+
    2023-05-18
    Java Hibernate Java Hibernate查询策略 Java Hibernate抓取策略
  • 详解Android内存优化策略
    目录前言一、内存优化策略二、具体优化的点1.避免内存泄漏2.Bitmap等大对象的优化策略(1) 优化Bitmap分辨率 (2) 优化单个像素点内存 (3) Bitmap的缓存策略 ...
    99+
    2024-04-02
  • Redis的过期策略和内存淘汰策略
    文章前言 提到内存管理,我们就需要考虑Redis的内存过期策略和内存淘汰机制。该文章便从这两方面入手,分享一些在Redis内存方面相关的基础知识。 文章中使用的示例版本为Redis5.0版本。 内存过期策略 内存过期策略主要的...
    99+
    2020-12-25
    Redis的过期策略和内存淘汰策略
  • 详解JS同源策略和CSRF
    目录概述同源策略 SOP同源限制绕过跨域跨站请求伪造 CSRF简述SOP 与 ajaxCSRF 对策跨域资源共享 CORS简单请求预检请求CORS 与 cookie概述 本文主要涉及...
    99+
    2024-04-02
  • 解释Teradata中的Join策略和技巧
    在Teradata中,Join策略是指在执行Join操作时系统选择的最佳连接方法。Teradata有多种Join策略可供选择,包括N...
    99+
    2024-04-02
  • 剖析 Java ActiveMQ 的消息路由策略
    1. 简单路由 简单路由策略是一种最基本的路由策略,它将消息路由到一个固定的目的地。该策略的配置非常简单,只需要指定目的地的名称即可。 <route> <from uri="queue:inbox"/> ...
    99+
    2024-02-08
    ActiveMQ 消息路由 简单路由 目的地路由 过滤器路由 负载均衡路由
  • Linux服务器安全性:优化Web接口保护策略的新思路
    Linux服务器的安全性对于保护Web接口至关重要。以下是一些优化Web接口保护策略的新思路:1. 使用防火墙:配置Linux服务器...
    99+
    2023-10-09
    Linux
  • Redis 的内存淘汰策略和过期删除策略的区别
    目录前言过期删除策略如何设置过期时间?如何判定 key 已过期了?过期删除策略有哪些?Redis 过期删除策略是什么?内存淘汰策略如何设置 Redis 最大运行内存?Redis 内存淘汰策略有哪些?LRU 算法和 LFU...
    99+
    2022-07-04
    Redis 内存淘汰策略 Redis 过期删除策略
  • Redis 的内存淘汰策略和过期删除策略的区别
    目录前言过期删除策略如何设置过期时间?如何判定 key 已过期了?过期删除策略有哪些?Redis 过期删除策略是什么?内存淘汰策略如何设置 Redis 最大运行内存?Redis 内存...
    99+
    2024-04-02
  • Angular路由复用策略的示例分析
    这篇文章主要介绍了Angular路由复用策略的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、引言路由在执行过程中对组件无状态操作...
    99+
    2024-04-02
  • Mysql数据库中的redo log 写入策略和binlog 写入策略
    目录redo log的写入策略binlog的写入策略生产配置性能瓶颈redo log的写入策略 InnoDB提供了innodb_flush_log_at_trx_commit参数,它...
    99+
    2024-04-02
  • 同源策略和跨域解决方案
    一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源。 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例:  URL 结果 原因 http...
    99+
    2023-01-30
    解决方案 策略
  • React的调和算法Diffing算法策略详解
    目录算法策略单节点diffing数组节点diffingkey值的使用要求算法策略 React的调和算法,主要发生在render阶段,调和算法并不是一个特定的算法函数,而是指在调和过程...
    99+
    2024-04-02
  • WPF路由事件中的三种策略介绍
    什么是路由事件 路由事件是具有更强传播能力的事件,它可以在元素树中向上冒泡和向下隧道传播,并且能够沿着传播路径被事件处理程序来处理。 路由事件允许事件在某个元素上被处理,即使这个事件...
    99+
    2024-04-02
  • PHP中灵活运用不同的路由策略
    引言:在开发一个Web应用程序时,路由是一个非常重要的概念。它决定了如何将请求映射到相应的处理程序,以及如何组织和管理应用程序的URL结构。在PHP中,我们可以通过使用不同的路由策略来实现更加灵活和高效的路由。1.原始路由策略:在早期的PH...
    99+
    2023-10-21
    PHP 路由策略 灵活运用
  • DB分库分表的基本思想和切分策略是怎样的
    DB分库分表的基本思想和切分策略是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、基本思想Sharding的基本思想就要把一个数据库切...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作