0

我想为 Symbolicate iOS Crash 生成崩溃报告以查看崩溃日志,所以我想使用代码获取崩溃报告,目前我只得到:

* -[__NSArrayM objectAtIndex:]:索引 121 超出范围 [0 .. 23]

 Application received signal SIGSEGV

( 

  0   CoreFoundation                      0x3120e2bb  + 186
  1   libobjc.A.dylib                     0x38f2b97f objc_exception_throw + 30
  2   CoreFoundation                      0x3120e1c5  + 0
  3   myshine                             0x001f9f51 myshine + 1503057
  4   libsystem_c.dylib                   0x393a9e8b _sigtramp + 34
  5   myshine                             0x000ac985 myshine + 137605
  6   myshine                             0x000ac35d myshine + 136029
  7   CoreFoundation                      0x311ab7cf  + 74

)

 not have 

/ 1: Process Information
  Incident Identifier: 30E46451-53FD-4965-896A-457FC11AD05F
  CrashReporter Key:   5a56599d836c4f867f6eec76afee451bf9ae5f31
  Hardware Model:      iPhone4,1
  Process:         Rage Masters [4155]
  Path:            /var/mobile/Applications/A5635B22-F5EF-4CEB-94B6-FE158D885014/Rage      Masters.app/Rage Masters
  Identifier:      Rage Masters
  Version:         ??? (???)
  Code Type:       ARM (Native)
  Parent Process:  launchd [1]

 / / 2: Basic Information
Date/Time:       2012-10-17 21:39:06.967 -0400
OS Version:      iOS 6.0 (10A403)
Report Version:  104

// 3: Exception
Exception Type:  00000020
Exception Codes: 0x000000008badf00d
Highlighted Thread:  0

我想得到同样的报告

4

3 回答 3

10

因此,您想编写自己的崩溃报告器,以便获取报告并对其进行符号化?

编写崩溃报告非常非常困难,请参阅开源库PLCrashReporter的开发人员的这两篇文章以了解其中涉及的内容:http: //landonf.bikemonkey.org/code/objc/Reliable_Crash_Reporting.20110912.htmlhttp ://landonf.bikemonkey.org/code/crashreporting/Reliable_Crash_Reporting_1.1.20130119.html

简而言之:

  • 所有代码都必须是异步安全的。这意味着你不能使用任何 Objective-C 代码。大多数 C 方法也不是异步安全的。
  • 一旦发生崩溃,您可以(基本上)不分配新内存。

您所询问的所有细节以及尚未被要求撰写此类记者的细节都需要写出超出答案的内容。

只是不要自己写,以免麻烦。那里有很多现成的解决方案。有些是开源的,如果它们对上述规则是安全的,则可以进行验证,有些是封闭的源代码,不容易验证(上面的文章确实详细介绍了其中一些)。

我不会对各种解决方案提出任何建议,因为我有偏见,因为我是一个开源和一个商业解决方案的开发人员。上面链接的文章确实分析了一些可用的解决方案。

所以这里有一些。

开源:

  • PLCrashReporter:自 2009 年以来在数千个应用程序中使用。安全、可靠地创建可以符号化的标准格式崩溃报告。
  • KSCrash:很新。创建标准格式的崩溃报告。可以连接到不同的服务器解决方案。
  • QuincyKit:基于 PLCrashReporter 的客户端 SDK 和基于 PHP 的服务器组件。使集成 PLCrashReporter 变得容易,服务器组件收集报告并在符号化后对其进行分组。可以使用您自己的 Mac 自动执行符号化来执行实际的符号化。(免责声明:我是这个的开发者)

托管/商业解决方案:

  • Bugsense:免费和付费计划。在后台使用 PLCrashReporter。SDK 的其余部分似乎是封闭源代码。服务器端符号。
  • BugSnag:免费和付费计划。开源 SDK。在引擎盖下使用 KSCrash。
  • Crashlytics:免费。闭源。确实在后台使用了 PLCrashReporter,现在使用他们自己的实现。服务器端符号。
  • Crittercism:免费和付费计划。在后台使用 PLCrashReporter。SDK 的其余部分似乎是封闭源代码。服务器端符号。
  • HockeyApp:付费计划,1 个月试用期。在后台使用 PLCrashReporter,所有 SDK 都是开源的。创建标准格式的崩溃报告。服务器端符号。(免责声明:我是这个的联合创始人和开发者之一)
  • Sentry:付费,相当新,开源(SDK 和服务器)。在引擎盖下使用 KSCrash。
  • Testflight:免费,封闭源代码。服务器端符号。

肯定还有一些我忘记了。

于 2013-03-20T12:20:31.100 回答
1

在 Xcode 目标中,

将“调试信息格式”设置为 DWARF。

生成调试符号:是

在复制期间去除调试符号:是

查看图片了解更多信息。在最终上传时,请确保您恢复相同。这是为了测试。 在此处输入图像描述

于 2013-03-20T11:00:45.747 回答
1

为此,您需要有一个在创建分发版本时生成的 dYSM 文件。

下面的链接可以对你有所帮助..

符号化 iPhone 应用程序崩溃报告

于 2013-03-20T11:01:02.657 回答