-1

我只在一个崩溃日志中注意到了这个问题,我无法完全理解为什么会发生这种情况。基本上,我已经对来自客户的崩溃日志进行了符号化,并且所有的检查和符号化都正确,除了一个 frame,它仍然是未符号化的。下面是一个片段(第 9 帧是问题):

6          libc++abi.dylib      0x00001114 std::terminate() + 20
7          libc++abi.dylib      0x00002513 __cxa_throw + 123
8          libstdc++.6.dylib      0x00005ba9 std::__throw_out_of_range(char const*) + 153
9          MyApp      0x002ff343  0x0000c000 + 3093315
10         MyApp      0x002ec02b -[ChildViewController tableView:cellForRowAtIndexPath:] (ChildViewController.mm:42)
11         MyApp      0x0042d725 -[ViewControllerRoot tableView:cellForRowAtIndexPath:] (ViewControllerRoot.m:198)
12         UIKit      0x0004e54d -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 413

我尝试了各种方法来符号化这条线,但无济于事。我已经手动运行了 atos 以及 symbolicatecrash.pl (详细了解发生了什么)。dSYM 和 .app 文件很好,并且与崩溃日志的二进制图像部分中的应用程序的 UUID 匹配。我使用的是最新的稳定版 Xcode,4.6。其他团队成员也尝试过,结果相同。

这里有什么问题吗,或者这是 Objective-C 的动态特性的问题?我相信是前者,但 MyApp 中的其他帧/符号被符号化的事实让我更加困惑!

更新:我应该澄清一下,似乎可以很容易地推断出丢失的帧,但是此时对许多不同的类进行了多次调用,这都可能引发out_of_range错误。因此,这个丢失的帧使调试变得更加困难。

4

1 回答 1

2

这可能是被调用的第 3 方代码吗?一些第 3 方静态库不包含符号。

另一种可能性是,此代码是通过使用 Xcode 子项目生成的静态库集成的。这个项目被设置为从静态库中去除符号。

这两种方法都将导致这些调用的崩溃报告中不会出现任何符号。

于 2013-02-26T15:51:14.047 回答