在如何从 EXC_BAD_ACCESS 中恢复?,我想出了如何从 中恢复EXC_BAD_ACCESS
,但我将错误访问的指针存储在全局中。显然,这不会扩展。当我在 iOS 模拟器 (i386) 中运行代码时,我可以在我的函数内部看到调试器部分中的faultvaddr
寄存器。但是,它的值与从. 有没有办法动态获取这个值?Exception State Registers
catch_exception_raise
vm_allocate
鉴于catch_exception_raise
下面的功能,我将如何发现导致的地址EXC_BAD_ACCESS
?
kern_return_t
catch_exception_raise(mach_port_t exception_port,
mach_port_t thread,
mach_port_t task,
exception_type_t exception,
exception_data_t code_vector,
mach_msg_type_number_t code_count)
{
fprintf(stderr, "catch_exception_raise %d\n", exception);
return KERN_SUCCESS;
}