NSException callStackSymbols

3
当出现异常时,会显示类似以下格式的堆栈跟踪:

2 CoreFoundation 0x013bd1cc -[__NSArrayI objectAtIndex:] + 236
3 –ò–°–≠–î 0x0000ac76 -[ContentButton handleGesture:] + 326
4 UIKit 0x00de24f2 -[UIGestureRecognizer _updateGestureWithEvent:] + 730
...

我发现在我的自定义类 ContentButton 的方法 handleGesture: 中,在 NSArray 中尝试使用 objectAtIndex: 方法时出现了异常。
但是这些数字(如 +236)代表什么意思呢?
在 Java 的堆栈跟踪中,这些数字代表抛出异常的代码行号(据我所知)。但是在此堆栈跟踪中,消息“[__NSArrayI objectAtIndex:]”在第47行发送(而不是第236行)。
非常感谢。

+236 表示二进制文件中方法开头的偏移量,单位为字节。 - VenoMKO
1个回答

1

有一段非常棒的视频来自于2010年WWDC,讲解如何理解崩溃报告。

您可以在这里找到它(需要登录Apple开发者账户)


1
仍然不知道这些数字的含义。在视频中被告知XCode可以自行标识任何崩溃报告,但实际上并非如此——仍然会在消息名称后面出现类似于+236的附加内容,而我仍然不知道这是什么意思。 - Gusev Andrey
@GusevAndrey 我也很困惑。据我所知,它是从汇编代码中方法声明的行号向下数的行数。除非您确切地知道类的每一行如何转换为汇编代码以及编译器如何关联变量,否则这并没有太大帮助。 - Ky -

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接