`
啸笑天
  • 浏览: 3465759 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

定位release的Crash位置

    博客分类:
  • ios
 
阅读更多

对于已经上线的应用,苹果测试的应用,或者是release环境包导致的crash,我们就需要一些特殊的手段来通过crash log进行分析定位了。

 

首先需要release版本的xxx应用的三个文件:xxx.app.dSYM文件、xxx.app文件、xxx.crash文件,确保他们有相同的uuid才能生成才能生证日志文件:

(xxx是工程名)

1.导出xxx.crash

通过Xcode的Organizer查看某台iphone设备的DeviceLog,选择需要的crash log,导出xxx.crash文件。(苹果测试crash会给你这个文件)

2.xxx.app

找到当前iphone设备上安装的ipa文件,更改文件后缀名为zip,解压后得到Payload文件夹,你需要的app文件就在其中了。

3.找到对应build版本的dSYM文件

dSYM文件是iOS编译后保存16进制函数地址映射信息的文件,每次应用程序build后,都会生成对应的xxx.app, xxx.app.dSYM文件。

4.确定dSYM、app以及crash文件的关系

每一个xxx.app, xxx.app.dSYM文件都拥有相应的uuid,crash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正确的日志文件。
查看xxx.app文件的uuid的方法,在terminal中输入命令:

dwarfdump --uuid xxx.app/xxx 

查看xxx.app.dSYM文件的uuid的方法,在terminal中输入命令:

dwarfdump --uuid xxx.app.dSYM 

而.crash的uuid位于,crash日志中的Binary Images:中的第一行尖括号内。如:

armv7 <8bdeaf1a0b233ac199728c2a0ebb4165>

 

 下面用symbolicatecrash指令生成日志文件

Xcode6.1路径, symbolicatecrash在: Xcode6.0.app ▸ Contents ▸ SharedFrameworks ▸ DTDeviceKitBase.framework ▸ Versions ▸ A ▸ Resources▸ symbolicatecrash  (不同版本xcode路径是不同的)

确认文件:

$ ln -s  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash /usr/bin/symbolicatecrash   

 设置xcode DEVELOPER_DIR:

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"  

 把xxx.app.dSYM文件、xxx.app文件、xxx.crash放在同一路径下执行:

symbolicatecrash xxx.crash xxx.app.dSYM > ~/crash.txt

 crash.txt就是和你debug模式所看到一样类型的输出了。

 

 

thx:

http://blog.csdn.net/guojin08/article/details/41351813

 

 

 

分享到:
评论

相关推荐

    如何定位Release程序崩溃原因

    如何定位Release程序崩溃原因

    bugly_crash_release.jar_release_bugly_

    而“bugly_crash_release.jar_release_bugly_”这一标题所揭示的,正是腾讯Bugly提供的崩溃报告服务的一个关键组件——Bugly Crash Release。这个jar文件是Bugly崩溃收集和分析系统的发布版本,专门用于处理应用运行...

    Qt mingw release版异常结束 crash信息捕捉和跟踪(含测试代码)

    程序在debug可以正常运行,但是在release版后异常结束,系统又没有提供任何信息情况下,或者程序发布后在客户手中出现异常崩溃,但自己测试又不能复现问题,要是能捕获到异常时相关信息就很好定位问题了。...

    示例代码:Release版崩溃,用VS调试dump文件,定位代码出错行【VS2017】

    本示例代码涉及的是如何在Release版本中处理崩溃,并使用Visual Studio(VS2017)进行调试,通过dump文件来定位代码出错的行数。这是一项关键技能,因为Release版本通常用于最终用户,而且调试信息较少,所以当出现...

    bugly_crash_release.jar_release_bugly_源码.zip

    《Bugly Crash Release 源码解析》 在软件开发过程中,Bugly 是一款非常知名的错误分析工具,尤其在Android应用开发中,它为开发者提供了强大的崩溃报告和性能监控功能。"bugly_crash_release.jar_release_bugly_...

    bugly_jar,bugly_agent.jar, bugly_crash_release.jar , libBugly.so

    在给定的文件信息中,我们看到涉及了几个与Bugly相关的文件,分别是"bugly_jar"、"bugly_agent.jar"、"bugly_crash_release.jar"以及"libBugly.so"。这些文件在Android应用开发中扮演着关键的角色,下面将详细解释...

    WinDbg离线下载安装包 + 使用示例:Release崩溃crash找到出错的函数、行

    在处理Release版本的程序崩溃问题时,WinDbg能够帮助我们定位到出错的函数和源代码行。通常,Release版本的程序不会像Debug版本那样提供丰富的调试信息,但通过分析崩溃时产生的dmp文件(内存转储文件),我们可以...

    iOS Crash日志-分析

    当我们软件release模式打包或上线后,不会像我们在Xcode中那样直观的看到崩溃的错误。这时我们就需要分析崩溃日志,iOS设备中会有日志文件保存我们每个应用出错的函数内存地址。通过Xcode的Devices/Organizer可以将...

    Qt Release 崩溃测试 demo

    本篇文章将深入探讨“Qt Release崩溃测试demo”的相关知识点,以及如何利用这个测试来定位和解决bug。 首先,让我们理解“Qt Release”版本。在Qt开发中,通常有Debug和Release两种构建模式。Debug模式包含了大量的...

    IMQA-Crash-Release

    IMQA-Crash-Release 是一个针对iOS平台的软件发布版本,主要关注的是应用程序稳定性,尤其是针对即时消息(IM)功能的错误管理和性能优化。在iOS应用开发中,Objective-C是一种常用的编程语言,因此我们可以推测这个...

    Android使用CrashHandler来获取应用的crash信息demo

    这不仅有助于开发者在发生错误时快速定位问题,还能提供有价值的设备信息和用户环境数据,从而提升应用的稳定性和用户体验。同时,结合服务器端的日志分析系统,可以实现远程监控和统计,为持续优化应用提供有力支持...

    crash_20221012【文档翻译_译文_英译中】.pdf

    文档“crash_20221012【文档翻译_译文_英译中】.pdf”似乎是一份关于软件崩溃分析的报告,其中包含了大量的设备信息、软件版本和错误日志。以下是根据提供的内容提取的关键知识点: 1. **设备信息**:设备型号为ARE...

    crash_20221012【文档翻译_译文_英译中】(2).pdf

    如"vmrunuifjdt05uqunullvtrvjoqu1fiezst00gu05trvHUS5gtzmgv0hfukugvvnfuk5btuugpsa/ieforagmt0oybsyxn0vgltzt...",很可能代表堆栈跟踪信息,它们记录了程序执行时的方法调用顺序,用于定位代码中出错的位置。...

    9 openEuler常见故障定界定位.pdf

    - 使用命令`uname -a`或`cat /etc/os-release`来查看openEuler的版本信息。 - **系统硬件信息**: - 可以通过命令`lspci`来获取系统的PCI设备信息,进一步使用`lspci -s xx:yy.z -vvv`获取特定设备的详细信息。 - ...

    window COREdump文件生成 c++代码

    Coredump文件包含了程序崩溃时内存中的关键信息,如进程的内存映射、全局变量、堆栈信息等,使得开发者能够定位到问题的具体位置,进而修复错误。本篇将详细介绍如何在C++代码中实现Windows系统的Coredump文件生成。...

    AndroidCustomCrash:自定义安卓的crash处理

    这不仅可以帮助你快速定位并修复问题,还能提供更好的用户体验,避免因应用突然崩溃而让用户感到困扰。在实际开发中,你还可以根据需求扩展这个框架,比如添加用户反馈功能,或者在崩溃时显示友好的错误提示页面。

    android调试方法总结

    - 在出现问题时捕获堆栈信息,分析具体的失败位置。 - 对于C/C++代码,使用 `AddressSanitizer` 或 `Valgrind` 工具检测内存错误。 #### Oops问题的调试和定位 - **定义**:当Android系统底层(如Linux内核)出现...

    用dump文件查找程序崩溃

    3. **查看堆栈信息**:输入命令`.ecxr`查看崩溃时的上下文信息,再输入`k`命令查看堆栈回溯,这有助于定位崩溃位置。 4. **检查变量值**:使用`dv`或`dv /v`命令查看局部变量和表达式的值,帮助理解崩溃原因。 5. **...

    程序崩溃自动重启以及将未捕获到的异常写退出栈

    当程序由于未捕获的异常而崩溃时,通常会丢失当前的堆栈信息,这使得定位问题变得困难。为了解决这个问题,我们可以编写一个全局的异常处理器,该处理器在异常发生时捕获异常,并在控制台上打印详细的堆栈跟踪信息。...

    Android实现自定义Crash handler记录崩溃信息实例代码

    private static final String FILE_NAME = "crash"; private static final String FILE_NAME_SUFFIX = ".txt"; private String phoneInfo; private static CrashHandler instance = new CrashHandler(); ...

Global site tag (gtag.js) - Google Analytics