android 分析anr,Android游戏程序结构分析

如何分析Android中如何调试Android分析tombstone 1 . armeabiaddr 2 line的日志将类似libxxx.so0x的调用栈的十六进制值翻译成文件名和函数名 。armeabiaddr 2 lineelibxxx . so0x . armea binm列出了文件的符号信息,armeabinmlcnslibdvm . so > dvm . data 3 .Armeabiobjdump列出了文件的详细信息,armeabiobjdumpCdlibc.so>libc.s通过分析以上工具,我们可以得到一个比较完整的调用栈和调用逻辑的汇编代码,
1、请教大牛怎么 分析ANR文件对于AndroidANR来说,发生ANR时,dump的trace.log非常重要 。ANR应用的每个线程的踪迹代表了每个线程在ANR发生时刻的运行状态,类似于快照;如果你的应用被主线程阻塞了,你可以通过主线程痕迹轻松定位阻塞点;想要有效的通过trace 分析ANR,首先需要通过main.log确认主线程被阻塞或者ANR是由无限循环引起的,这样才能确认主线程的踪迹是有参考价值的,因为踪迹只是一瞬间的动作 。如果主线程阻塞了5秒 , 主线程的状态在这5秒内是一样的,所以可以通过trace确认阻塞点 。
2、AndroidANR机制 broadcast的ANR处理比较简单,主要是判断是否再次超时,记录日志,记录ANR次数等 。然后继续调用processNextBroadcast函数处理下一次广播 。content _ provider _ publish _ time out 10s活动的ContentProvider超时的ANR最复杂 , 只有活动中出现的ANR会弹出ANR提示框 。
输入调度:活动最重要的功能之一是交互 。为了方便交互,Android中的InputDispatcher会发出操作事件,最终会在InputManagerService中发出 , 并通过InputChannel分发到Activity 。必须响应交互式事件 。如果不能及时处理,IMS将报告ANR并交给AMS弹出ANR提示框 。
3、如何调试 分析Android中发生的tombstone 1.armeabiaddr2line将类似libxxx.so0x的调用栈的十六进制值翻译成文件名和函数名 。armeabiaddr 2 lineelibxxx . so0x . armea binm列出了文件的符号信息 。armeabinmlcnslibdvm . so > dvm . data 3 . armeabiobjdump列出了文件的详细信息 。详细armeabiobjdumpCdlibc.so>libc.s通过上述工具的分析我们可以得到一个比较完整的调用栈和调用逻辑的汇编代码 。
4、如何 分析解决AndroidANR【android 分析anr,Android游戏程序结构分析】从日志中,我们可以看到ANR的类型和CPU的使用情况 。如果CPU使用率接近100%,说明当前设备很忙,可能是CPU饥饿造成的 。如果CPU使用率很?。得髦飨叱淌亲枞?。如果IOwait为高,则意味着ANR可能是由主线程的I/O操作引起的 。除了读取日志,我们需要trace.txt文件来解决ANR 。如何获得?可以获取$ chmod 777/data/anr$ RM/data/anr/trace . txt $ PS $ kill 3 piddababpulldata/anrtraces . txt ./my traces 。我看到最多的是以下信息:PID 21404 AT 2011 04 01 13:12:14 cmdline:com 。android.Emaildalvikthreads:(互斥体:tll 0 ts l0 ts l0 ghl 0 hwl 0 hwl 00)main prio 5 tid 1 native | groupmaincount 1 dscount 0 obj 0x 2 。
5、请教 androidserviceANR问题处理耗时的操作不能在服务中处理,因为服务也是一个接口进程,在这个接口进程中不允许处理耗时的数据,只有在创建一个新的线程时才能处理耗时的数据 。ANR:许多刚接触Android开发的网民可能会发现“ANR”这个词 。AndroidANR是什么?事实上,ANR的全名是ApplicationNotResponse 。当一个应用长时间处于假死状态时 , Android系统会弹出一个窗口说 , XXXisnotresponding给出两个按钮,一个是forceclose,一个是wait 。
2.执行耗时的操作 。Android默认超过5000ms,即5秒后弹出ANR窗口 。有些应用程序在没有缓存的情况下第一次执行时可能会非常耗时 。可以通过播放Splash Logo等方式延迟加载 。3.注意多线程在3中的使用 。服务和appWidget,除非它与Activity在不同的进程中工作 。
6、如何 分析Android的Log