在做的项目中,用到了友盟的组件,在没有禁用错误日志上传之前,收集了一些错误日志。

有一些朋友看到了错误日志,却不知道怎么定位到程序的的代码中,实际上,这一步是非常的简单。
友盟没有集成.dSYM文件,只能显示错误的地址,无法显示详细的信息。

准备步骤,
1,友盟错误日志

                *** -[__NSArrayM objectAtIndex:]: index 20 beyond bounds [0 .. 19]
(null)
(
"0 CoreFoundation 0x371308bf __exceptionPreprocess + 162",
"1 libobjc.A.dylib 0x317fe1e5 objc_exception_throw + 32",
"2 CoreFoundation 0x37079b6b -[__NSArrayM objectAtIndex:] + 270",
"3 aaaaa 0x0004af6f aaaaa + 302959",
"4 UIKit 0x3277d565 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 944",
"5 UIKit 0x327f5ce7 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 158",
"6 Foundation 0x31ba0943 __NSFireDelayedPerform + 414",
"7 CoreFoundation 0x37104a63 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14",
"8 CoreFoundation 0x371046c9 __CFRunLoopDoTimer + 364",
"9 CoreFoundation 0x3710329f __CFRunLoopRun + 1206",
"10 CoreFoundation 0x370864dd CFRunLoopRunSpecific + 300",
"11 CoreFoundation 0x370863a5 CFRunLoopRunInMode + 104",
"12 GraphicsServices 0x3123cfcd GSEventRunModal + 156",
"13 UIKit 0x326f8743 UIApplicationMain + 1090",
"14 aaaaa 0x00003687 aaaaa + 9863",
"15 aaaaa 0x00003144 aaaaa + 8516"
)

2.找到.dSYM文件,在编译程序时,会自动生成这个文件,

3.把应用 aaaaaa.app和 .dSYM文件放到一个目录中,

执行

atos -arch armv7 -o 'aaaaaa.app/aaaa' -l 0x0004af6f

这样就得到了程序错误的对应的源代码地址。
--------------------------------------

当然,如果你的程序很复杂,友盟的功能肯定不够使用。

友盟无法返回详细的信息,Binary Images, Thread 0 crashed with ARM Thread State.. 更主要的是,很许多的错误代码友盟无法收集,也无法收集更多的信息。

这时,你就需要更专业的日志处理方法。

友盟错误日志分析(转自:COCOACHINA shemy )的更多相关文章

  1. 友盟崩溃日志分析工具 - dSYMTools

    公司的项目中集成了UM的统计功能,UM统计可以统计app的用户新增,版本分布,日志崩溃等信息,打开错误分析按钮,则可能会看到很多崩溃的日志信息 选择编辑可以选择更多的版本号 点击列表中的一个崩溃日志, ...

  2. iOS之友盟错误统计解决

    http://www.cocoachina.com/ios/20150720/12627.html http://lieyunye.github.io/blog/2013/09/10/how-to-a ...

  3. nginx 错误日志分析 以及说明

    1.日志简介 nginx日志主要有两种:访问日志和错误日志.访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义:错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义.两种日 ...

  4. nginx 错误日志分析

    502 1.查看nginx错误日志 tailf /data/log/nginx/error.log // :: [error] #: * recv() failed (: Connection res ...

  5. Slow ReadProcessor&Error Slow BlockReceiver错误日志分析(转)

    1.总结 "Slow ReadProcessor" 和"Slow BlockReceiver"往往是因为集群负载比较高或者某些节点不健康导致的,本文主要是帮助你 ...

  6. (转)SLOW READPROCESSOR;ERROR SLOW BLOCKRECEIVER错误日志分析

    1.总结 "Slow ReadProcessor" 和"Slow BlockReceiver"往往是因为集群负载比较高或者某些节点不健康导致的,本文主要是帮助你 ...

  7. apache的错误日志分析

  8. iOS crash日志分析

    iOS crash日志分析 一. 寻找crash文件:手机崩溃后的ips或者crash文件(ips文件可以直接修改成crash文件,直接改后缀名就可以了),这里说下如何拿到crash文件 1. 把运行 ...

  9. 如何通过友盟分析发布后App崩溃日志-b

    要分析崩溃日志,首先需要保留发布时的编译出来的.xcarchive文件.这个文件包含了.DSYM文件. 我一般的做法是,发布成功后,把这个文件.xcarchive直接提交到代码版本库对应的版本分支里, ...

随机推荐

  1. 删除ubuntu后无法进入windows

    一天,脑袋一热想装个ubuntu学习学习,结果装的ubuntu版本比较老,没有集成我笔记本的网卡驱动,在ubuntu下上不了网,心想上不了网学习起来不是很不方便,于是就直接在win7下将ubuntu的 ...

  2. tablediff使用方法

    tablediff -sourceserver "db0093\sql2008" -sourcedatabase "testly" -sourcetable & ...

  3. 处理数组的forEach map filter的兼容性

    处理数组的forEach //forEach处理 if(!Array.prototype.forEach) { Array.prototype.forEach = function (callback ...

  4. 【Python】函数基础简介

    一.函数 1. 简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2. 组成 函数代码块以 def 关键词开头,后接函数名和圆括号( ...

  5. C++ Primer Plus 笔记记录

    (一) /a 这个转移字符竟然能调用计算机的硬件 喇叭~~ 对于float c++只能保证6位有效数字 似乎 double是13位 cout.setf(ios_base::fixed, ios_bas ...

  6. SQLSERVER进程CPU使用率100%

    解决SQLSERVER2008 CPU使用率99%: 1.dbcc checkdb 重建索引 2.檢查有沒有死鎖 -- sp_lock SELECT request_session_id spid , ...

  7. Access批量操作

    鉴于C#要插5万条记录到Access很慢,在网上找了好久的资料,终于找到了比较有用的信息(转载自Bach)谢谢! 总结如下: 1.导出TXT:  select * into [data.txt] in ...

  8. Java 工具集

    在 sudo -u tomcat 状态下执行 1. jstack jstack pid >> file : 打印当前 thread stack 状态 CPU 高分析流程 使用jstack分 ...

  9. Linq group

    using System;using System.Collections.Generic;using System.Linq; public class MyClass{ public static ...

  10. JS验证字符长度

    function getStrLength(str) { var cArr = str.match(/[^\x00-\xff]/ig); return str.length + (cArr == nu ...