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;
}