EXC_BAD_ACCESS中的代码参数是什么意思?

时间:2014-11-13 18:27:16

标签: ios objective-c exc-bad-access

我在iOS上使用Objective C大约一个月,但有很多以前的C ++经验。

我对EXC_BAD_ACCESS的理解是它本质上是Segmentation Fault,即尝试访问允许区域之外的内存。虽然奇怪的是我在崩溃的iOS应用程序中也特别看到了SIGSEGV。我注意到有一个代码参数(例如code=1)作为此异常的一部分,我想知道该代码具体意味着什么。

我在google周围搜索过,似乎找不到关于此错误的正式文档,and apparently I'm not alone.有谁知道这里的代码参数是什么意思?

1 个答案:

答案 0 :(得分:6)

如果您查看设备上生成的崩溃日志,您会看到:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at <some address>

有关与例外关联的code参数的进一步说明,您可以参考usr/include/mach/kern_return.h。它提供了中等可读的常量名称以及与常量值相关联的短注释模糊。

打开该文件的最快方法是在Xcode文件中键入常量KERN_INVALID_ADDRESS,然后选择“跳转到定义”。 ;)

仅供参考:code=1KERN_INVALID_ADDRESS直接相关。与此常量关联的注释模糊显示:

/* Specified address is not currently valid. */