zoukankan      html  css  js  c++  java
  • iOS crash 追终 ,iOS 如何定位crash 位置

    https://developer.apple.com/library/ios/technotes/tn2151/_index.html

    错误分析是基于设备中的crash log 与 编译文件时生成的dsYM文件相结合得出的结果,crash log 中包含应用的 crash trace stack,dsym中包含应用的符号表信息,符号表信息用于匹配程序中的文件,函数,代码,行号。

    一、可用crash trace 追踪的crash

    二、low memery 是追踪不到的因为没有对应以下的这类型的符号

    1)EXC_BAD_ACCESS

    SIGSEGV: 通常由于重复释放对象导致,这种类型在切换了ARC以后应该已经很少见到了。

    SIGABRT:  收到Abort信号退出,通常Foundation库中的容器为了保护状态正常会做一些检测,例如插入nil到数组中等会遇到此类错误。
    SEGV:(Segmentation  Violation),代表无效内存地址,比如空指针,未初始化指针,栈溢出等;

    SIGBUS:总线错误,与 SIGSEGV 不同的是,SIGSEGV 访问的是无效地址,而 SIGBUS 访问的是有效地址,但总线访问异常(如地址对齐问题)

    SIGILL:尝试执行非法的指令,可能不被识别或者没有权限
    2)EXC_BAD_INSTRUCTION

    3)EXC_ARITHMETIC

    不用第三方工具,如何分析?

    首先,确保在release(Ad Hoc或者App Store)一个版本时,保存了对应的xxx.app和xxx.dSYM文件。
    其次,验证xxx.crash、xxx.app和xxx.dSYM三者的uuid是否一致。
    验证方法:
    1)xxx.app。dwarfdump --uuid mobileguard.app/mobileguard
    2)xxx.dSYM。dwarfdump --uuid mobileguard.app.dSYM/Contents/Resources/DWARF/mobileguard
    3)xxx.crash。
    确保三者uuid一致以后,用symbolicatecrash工具生成易读的日志信息。

    先准备环境:
    1)链接symbollicatecrash到/usr/bin/中,就可以直接使用sybollicatecrash命令。ln -s /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash /usr/bin/symbolicatecrash
    2)设置xcode DEVELOPER_DIR。export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer”
    然后执行命令:symbolicatecrash m.crash mobileguard.app.dSYM > n.crash

    当然是有 分析工具可以用的:

    Crashlystics (twitter,使用自动集成工具,通过上传dsym文件形式,强烈推荐使用,简单,好用,定位问题快,准)

    Bugly (腾讯,用相应的jar 将dsym分析后上传至腾讯服务器)

    MoClick (友盟,需下载crash log 并用相应的工具解析)

    Hockeyapp (微软,需上传dsym文件,收费,有自动集成工具)

  • 相关阅读:
    Elasticsearch 索引操作
    windows curl命令
    Elasticsearch简介
    ElasticSearch插件安装
    SignalR实时聊天功能
    原来现在很多人都用SignalR来实现Chat Room
    设计模式(六)(Command Pattern)命令模式
    FtpWebRequest FTP异步下载、异步上传文件
    FTP规范
    oracle组建:ODAC112021Xcopy_x64,在开发机上,不用安装oracle的客户端等开发
  • 原文地址:https://www.cnblogs.com/codetime/p/6124197.html
Copyright © 2011-2022 走看看