Ada*_*Lee 17 xcode objective-c
我收到的代码= 1或代码= 2表示EXC_BAD_ACCESS错误.我想知道code = 1和code = 2之间有什么区别?
Mar*_*n R 29
Code = 1是KERN_INVALID_ADDRESS,code = 2是KERN_PROTECTION_FAILURE.两者都在"技术说明TN2123 CrashReporter"中解释:
最常见的例外形式是:
- EXC_BAD_ACCESS/KERN_INVALID_ADDRESS - 这是由访问未映射内存的线程引起的.它可以由数据访问或取指令触发; 线程状态部分描述了如何区分.
- EXC_BAD_ACCESS/KERN_PROTECTION_FAILURE - 这是由尝试写入只读内存的线程引起的.这始终是由数据访问引起的.
代码定义<mach/kern_return.h>
如下:
#define KERN_INVALID_ADDRESS 1
/* Specified address is not currently valid.
*/
#define KERN_PROTECTION_FAILURE 2
/* Specified memory is valid, but does not permit the
* required forms of access.
*/
Run Code Online (Sandbox Code Playgroud)
并且在<mach/exception_types.h>
其中记录了EXC_BAD_ACCESS的代码是kern_return_t
:
#define EXC_BAD_ACCESS 1 /* Could not access memory */
/* Code contains kern_return_t describing error. */
/* Subcode contains bad memory address. */
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2296 次 |
最近记录: |