iphone - iTunesConnect 崩溃日志已部分符号化;不显示行号

标签 iphone xcode offset symbolicate

我的 XCode 3.2.5 构建的应用程序的 iTunesConnect 崩溃日志显示方法名称,但不显示行号。例如,在我粘贴在下面的删节崩溃报告中,它显示了以下内容:

0x000f5ef8 -[MyTableViewController dealloc] + 120

这里有两件事让我困惑,我希望能得到一些见解。首先是为什么来自 iTunesConnect 的原始 .crash 文件已经部分符号化:它显示了类和方法名称,但不显示源代码文件和行号。我希望原始 iTunesConnect 崩溃日志仅显示十六进制地址。据我了解,只有当我将崩溃日志下载到本地系统并使用适当的工具(XCode Organizer、symbolicatecrash、atos、gdb x/i 命令等)将其显式绑定(bind)到确切的应用程序二进制文件和 dSYM 文件时(那些具有匹配的 UUID),我会看到类、方法、源代码文件和行号的完整符号。即使当我在 Windows 机器上下载并查看崩溃日志时,它也显示为部分符号化。我担心我的发行版二进制文件必须包含一些调试符号,以便此信息显示在原始崩溃日志中,尽管在其发行版目标设置中设置了“Strip Linked Project”。这里的任何见解都会很棒。

第二件让我困惑的事情,也是我在解决这个备受瞩目的崩溃问题时更直接关心的事情,就是抵消业务。我非常仔细地找到了具有匹配 UUID 的 dSYM 和应用程序二进制文件,将它们放在我的主目录中,以便 Spotlight 等人可以找到它们,无论我做什么,我都无法转换该偏移量 [MyTableViewController dealloc] + 120源代码文件(据我所知是 MyTableViewController.m)和行号。我已对原始 iTunesConnect .crash 文件尝试了以下技巧:

  • XCode Organizer:它的“符号”不会影响崩溃日志的任何更改 - 是一样的。
  • symbolicatecrash:在详细模式下它并没有真正提示任何事情,并且输出崩溃日志是相同的
  • gdb:使用与 XCode 3.2.5 相同的 gdb 和 -arch 设置来生成发行版本,并按照 this post 加载匹配的应用程序二进制文件和 dSYM 符号。 ,gdb 'x/i' 和 'info line *' 命令告诉我 [MyTableViewController dealloc] + 120对应于我们代码库中完全不相关的部分,位于完全不同的文件中——甚至是 .h 文件!大雁追逐。

这里有些不对劲。尽管确保崩溃报告、应用程序二进制文件和 dSYM 文件中的 UUID 完全相同……这些工具都无法生成实际的行号,并且以低级方式执行此操作会让我陷入徒劳的追逐。知道确切的行号对于解决此问题至关重要,因为我们无法在内部重现此崩溃,因此我们在这里盲目飞行。这看起来是一个简单的过度释放的对象,但不清楚它到底是哪个对象,而且我们无法从上下文中判断出来。我想知道是否有一些被盗用的 XCode build设置以某种方式破坏了符号化过程。

感谢您的宝贵时间!

以下是来自 iTunesConnect 的删节原始 .crash 日志。

Incident Identifier: 09EAE058-7D55-4AE5-947A-17280FB0211A
Hardware Model:      iPhone3,1
Process:         MyApp [1895]
Path:            /var/mobile/Applications/B4B872EF-CB0D-41D7-A7B5-435ADE479D0A/MyApp.app/MyApp
Identifier:      MyApp
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2011-01-24 14:06:32.941 -0500
OS Version:      iPhone OS 4.2.1 (8C148)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xd0000000
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x33479466 objc_msgSend + 18
1   MyApp                       0x000f5ef8 -[MyTableViewController dealloc] + 120
2   CoreFoundation                  0x33a26f74 -[NSObject(NSObject) release]
3   libobjc.A.dylib                 0x3347a812 objc_setProperty
4   UIKit                           0x320bb4a0 -[UINavigationController setDisappearingViewController:]
5   UIKit                           0x320bb478 -[UINavigationController _clearLastOperation]
xx SNIP xx
23  MyApp                       0x00014eac main + 36
24  MyApp                       0x0000b324 start + 44

XX SNIP xx

Binary Images:
    0x1000 -   0x1e3fff +MyApp armv7  <5570f8eee3bc11647732c12f96fe9553> /var/mobile/Applications/B4B872EF-CB0D-41D7-A7B5-435ADE479D0A/MyApp.app/MyApp

最佳答案

我在释放未保留的对象或位于自动释放池中的对象时遇到了类似的问题,从而被释放了两次。我经常会因为框架/iOS 内部的某个位置而崩溃,但这是由于我缺乏适当的内存管理造成的。我并不是说这里发生了这种情况,而是我在出现类似错误时所经历的事情。

关于iphone - iTunesConnect 崩溃日志已部分符号化;不显示行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880081/

相关文章:

ios - 如何递归搜索具有良好性能的XCUIElement树?

javascript - ScrollTop 具有多个 anchor 的偏移粘性栏

iphone - 在 UIImageView 中同步后台作业

iphone - 如何强制更新用户位置?

iOS Swift On Tab 离开功能

ios - Swift 转换,CGFloat 到 Integer

jQuery:在 $.proxy 内查找左侧偏移量

jQuery offset() 仅在 Safari 中返回非常不正确的值

iOS 声音无法在 Swift 中播放

iphone - 如何制作可扩展的 UITableViewCell