查看iOS应用crash日志
基本操作:
1、电脑安装好Xcode,连接好手机设备
2、打开Xcode,点击Window-Devices and Simulators
3、选中手机设备,点击View Device Logs,即可查看手机crash日志

这里有个问题,我们打印出来的crash日志里面,有代码的函数名,但有些却只有函数地址。
原因就在于我安装到手机上的app并不是由我当前这台电脑编译打包出来的,没有**.app.dSYM这个文件,所以根本没有办法把地址同步解析出来。
处理方法:
1、在桌面创建一个Crash文件夹,然后去编译打包的机器上打开Xcode-Window-Organizer,在Archives找到App,右键Show in Finder
2、复制**.ipa和**.app.dSYM到Crash文件夹
3、把symbolicatecrash文件(找到文件的方法见最下面)以及待解析的**.crash文件也一并复制到Crash目录下
4、检测dYSM文件和crash文件是否对应
从终端进入到刚刚创建的Crash文件中,输入dwarfdump --uuid **.app.dSYM。如果输出的uuid和crash文件中的一致,则可以解析出正确的crash文件。crash文件中的uuid位于Binary Images中的第一行尖括号内。


5、执行命令:./symbolicatecrash **.crash **.app.dSYM > crashLog.crash
如果解析成功了,就会有函数名了,像下面这样

注意,一般情况下,第一次使用symbolicatecrash会产生一个error,如下的错误信息
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
解决办法是输入 export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
再执行 ./symbolicatecrash **.crash **.app.dSYM > crashLog.crash 就能解析了。

怎样正确找到需要的symbolicatecrash文件呢?
首先要知道一点,之所以在View Device Logs面板可以看到crash日志,主要的功臣就是一个叫symbolicatecrash的可执行文件。集成在Xcode中的symbolicatecrash有点类似于集成在Android Studio中的adb工具包一样,并且两者都是可以单独拿出来使用的。
首先,找到symbolicatecrash文件的位置:find /Applications/Xcode.app -name symbolicatecrash -type f
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/iOSSupport/Library/PrivateFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode6.0之前:
"Contents->Developer->Platforms->iPhoneOS.platform->Developer->Library->PrivateFrameworks->DTDeviceKit.framework->Versions->A->Resources"
或者
"Contents->Developer->Platforms->iPhoneOS.platform->Developer->Library->PrivateFrameworks->DTDeviceKitBase.framework->Versions->A->Resources"
Xcode6.0之后,改成 "Contents/SharedFrameworks"
只要找到"symbolicatecrash" 文件, 复制然后粘贴到一个 "Crash" 文件夹里面。
这里我用的是Xcode11,所以使用的是最后一个,把它拷贝到Crash文件夹就ok了。
假如查看crash log中的崩溃线程是这样的:
Thread 0 Crashed:
0 libobjc.A.dylib 0x00003ec0 objc_msgSend + 24
1 MyApp 0x000036d2 0×1000 + 9938
我们得到了用户发生崩溃情况的内存地址:0x000036d2
然后回到我们应用程序的build目录,目录下一定要包含**.app和**.app.dSYM两个文件。在控制台使用dwarfdump命令,就能解析出内存地址,如:
dwarfdump –lookup 0x000036d2 –arch armv6 MyApp.app.dSYM
查看iOS应用crash日志的更多相关文章
- iOS解析crash日志:
iOS解析crash日志:我们在ios开发中会碰到的很多crash问题,如果Debug调试模式的话,我们可以往往很容易的根据log的输出定位到导致crash的原因,但对于已经上线的应用,或者是rele ...
- 脚本处理iOS的Crash日志
背景 当我们打包app时,可以选择生成对应的符号表,其保存 16 进制函数地址映射信息,通过给定的函数起始地址和偏移量,可以对应函数具体信息以供分析. 所以我们拿到测试给的闪退日志(.crash)时, ...
- ios crash的原因与抓取crash日志的方法
首先我们经常会闪退的异常有哪些呢?crash的产生来源于两种问题:违反iOS策略被干掉,以及自身的代码bug. 1.IOS策略 1.1 低内存闪退 前面提到大多数crash日志都包含着执行线程的栈调用 ...
- iOS应用的crash日志的分析基础
Outline如何获得crash日志如何解析crash日志如何分析crash日志 1. iOS策略相关 2. 常见错误标识 3. 代码bug 一.如何获得crash日志 ...
- Crash日志分析
从Crash文件出发解决bug的一般步骤,分三步: a, 获取设备上的崩溃日志. b, 分析崩溃日志,找到报错位置(定位到函数和代码行数). c, 打开代码,改bug. 1, 获取设备日志 1. 在可 ...
- iOS Crash日志
Understanding Crash Reports on iPhone OS https://developer.apple.com/videos/wwdc/2010/?id=317 http:/ ...
- iOS及时log日志查看工具 (iConsole)
github下载地址:https://github.com/nicklockwood/iConsole 偶然看到的一个iOS及时log日志查看工具,通过该工具,我们可以在任何想看日志的时候,通过手势呼 ...
- Dokit支持iOS本地crash查看功能
一.前言 在日常开发中或者测试过程中,我们的应用可能会出现Crash的问题.对于这类问题我们要抱着零容忍的态度,因为如果线上出现了这类问题,将会严重影响用户的体验. 如果Crash出现的时候恰好是在开 ...
- iOS:crash崩溃日志分析
一.前言: 作为一个合格的iOS开发者,除了具有规范强悍的编码能力外,还应该具有过硬的查错纠错能力.在项目运行时,程序崩溃是不可避免的,遇到这个问题,有时会出现一大堆的crash日志,艹,貌似看不懂呀 ...
随机推荐
- Python2.7-NumPy
NumPy 提供了两种基本对象ndarray(N-dimensional array object)和 ufunc(universal function object)ndarray(下文统一称之为数 ...
- dubbo和rabbitmq对比
随着项目越来越大,局势就是项目拆分,大项目拆分成很多项目,各种技术也应允而生.从应用交互层面,按我的理解dubbo和rabbitmq就对比分析进行学习.dubbo和zookeeper结合 1.zoo ...
- P1726 上白泽慧音
题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点.人间 ...
- rsync+inotifywait
0.rsync+inotify是实现文件实时同步的,加什么参数才能实现实时同步,--delete参数又是什么意思? 1.运行模式(服务器) rsync有两种常用的认证方式,一种是rsync-daemo ...
- 板载CAN的树莓派扩展板Strato Pi CAN
板载CAN的树莓派扩展板Strato Pi CAN Sfera Labs推出了最新的树莓派扩展组件“灵云派”,其中包括CAN总线,电气隔离的RS-485,RTC和9-65V电源. 位于意大利米兰的 ...
- Mike的农场 BZOJ4177
分析: 最小割,不选则割的建模题...(然而一开始我当成了费用流,简直丧心病狂...最后想到了最小割...) 对于条件一,直接建一条双向边就可以了,并且不计入sum中,因为这是作为费用的存在,让它跑出 ...
- No CPU/ABI system image available for this target 解决办法
经过了好几天的奋战,终于解决了这个问题.百度出来的方法真的是很垃圾了 最后用google,才解决出这个问题. 接下来,直入正题: 附上解决的链接:https://blog.csdn.net/doubl ...
- 在 R 中估计 GARCH 参数存在的问题(基于 rugarch 包)
目录 在 R 中估计 GARCH 参数存在的问题(基于 rugarch 包) 导论 rugarch 简介 指定一个 \(\text{GARCH}(1, 1)\) 模型 模拟一个 GARCH 过程 拟合 ...
- python 回溯法 子集树模板 系列 —— 10、m着色问题
问题 图的m-着色判定问题 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色? 图的m-着色优化问题 若一个图最少 ...
- 前端项目模块化的实践1:搭建 NPM 私有仓库管理源码及依赖
以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...