system server ANR 一种分析方法 -- Android JVM异常重启简析
来源:互联网 发布:cydia软件源必备 编辑:程序博客网 时间:2024/06/18 14:42
http://blog.csdn.net/do_script/article/details/7554627
SYSTEM SERVER进程ANR 一般会导致java vm不停重启,还好保留了自动打印log到文件中的方法,出现这种概率性问题,从log入手就简单多了。
1. 找到SYSTEM server的PID,一般在logcat中会有这么一句
System server process 2094 has been created; 2094就是你需要的PID
2. 根据pid去搜索写入anr的地方,比如log中应该会有下面这些log:
05-10 11:10:02.360 I/Process ( 2094): Sending signal. PID: 2094 SIG: 3 这里发了SIGQUIT ----向system server进程发quit信号,这里是“果”
05-10 11:10:02.360 I/dalvikvm( 2094): threadid=4: reacting to signal 3
05-10 11:10:02.420 I/dalvikvm( 2094): Wrote stack traces to '/data/anr/traces.txt'
之后也一定会有类似的kill log:
05-10 11:10:34.860 I/Process ( 2094): Sending signal. PID: 2094 SIG: 9
05-10 11:10:34.860 W/Watchdog( 2094): *** WATCHDOG KILLING SYSTEM PROCESS: null ---- 这里发出了kill
至于ANR的“因”,继续在log中往上寻找,也一定能有类似的语句:
05-10 11:09:37.980 W/ActivityManager( 2094): Timeout of broadcast BroadcastRecord{2b1a7f48 android.intent.action.SCREEN_OFF} --这里就是"因"SCREEN_OFFtimeout
05-10 11:09:37.980 W/ActivityManager( 2094): Receiverduring timeout: BroadcastFilter{2b161a08 ReceiverList{2b1619d0 2094 system/1000 local:2b130420}}
3. 根据上面的出现“因”的时间戳,去kernel中寻找相应的点,看是否有错。运气好的话在附近的logcat或kernellog中能找到具体的问题点。
笔者遇到的SCREEN_OFF 导致的VM重启是suspend时引起的,具体原因就不说了。
另外:一般的ANR可以从/data/anr/traces.txt (默认是开启的)中看到最后停在哪个函数上。
- system server ANR 一种分析方法 -- Android JVM异常重启简析
- system server ANR 一种分析方法 -- Android JVM异常重启简析
- system server ANR 一种分析方法 -- Android JVM异常重启简析
- android anr分析方法
- android anr分析方法
- android anr分析方法
- android anr分析方法
- android anr分析方法
- android anr分析方法
- android anr分析方法
- android anr分析方法
- android 中ANR异常的分析
- android System Server 分析
- Android ANR介绍及分析ANR log信息的方法
- Android-ANR-Android ANR分析
- android anr traces日志分析方法
- android 中anr的分析方法总结
- Android anr异常测试
- js前台验证
- 如何实现Excel表中数据导入到数据库中
- 如何实现drawerNavigation &&&& 改变软件的logo
- 第一个hibernate
- 不同编译器 函数用法or 函数命名冲突用法(待完善)
- system server ANR 一种分析方法 -- Android JVM异常重启简析
- watch里输入 @err,hr 显示错误信息
- JavaMail简易教程
- ArcGIS10.1 平台中oracle连接客户端配置
- 卸载plsql后重新安装遇到问题小结
- android的logcat详细用法!
- Openfire 整合自有用户系统
- javadoc常用命令
- Linux中设置服务自启动的三种方式