我在iOS上使用Objective C已经有一个月了,但之前有很多C++的经验。
我的理解是EXC_BAD_ACCESS
本质上相当于Segmentation Fault,即尝试访问不允许的内存区域。但奇怪的是,在崩溃的iOS应用程序中,我还看到过SIGSEGV
。我注意到这个异常中有一个代码参数(例如code=1
),我想知道那个代码具体是什么意思。
我在谷歌上搜索了一下,似乎找不到关于这个错误的正式文档,显然我并不孤单。 有人知道这里的代码参数是什么意思吗?
我在iOS上使用Objective C已经有一个月了,但之前有很多C++的经验。
我的理解是EXC_BAD_ACCESS
本质上相当于Segmentation Fault,即尝试访问不允许的内存区域。但奇怪的是,在崩溃的iOS应用程序中,我还看到过SIGSEGV
。我注意到这个异常中有一个代码参数(例如code=1
),我想知道那个代码具体是什么意思。
我在谷歌上搜索了一下,似乎找不到关于这个错误的正式文档,显然我并不孤单。 有人知道这里的代码参数是什么意思吗?
如果你查看在你的设备上生成的崩溃日志,你会看到:
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
并选择“跳转到定义”。 ;)
FYI:code=1
直接关联到KERN_INVALID_ADDRESS
。与此常量相关联的注释为:
/* Specified address is not currently valid. */