2015-12-04 59 views
2

许多OS X崩溃报告具有本节就像下面“应用程序的具体信息” crashreports

异常类型报价:EXC_CRASH(SIGABRT)异常代码: 0x0000000000000000,0x0000000000000000

特定应用信息:objc [1769]:垃圾收集是 OFF

终止应用程序由于未捕获的异常 'InvalidX',原因:“X不能为0 “

第一掷调用堆栈:

在我的应用程序有自定义的崩溃处理。我只能处理信号,没有别的。我在哪里可以检索这些有用的信息?

我发现,你可以设置内置的故障,以显示消息报告

static const char *__crashreporter_info__ = 0; 
asm(".desc __crashreporter_info__, 0x10"); 

但我想没有设置,但在检索我的自定义信号和异常处理程序的信息。

+0

我认为你的问题措辞太含糊。你是否在谈论检索异常信息,如从NSException?文档讨论特定于应用程序的信息。 – Jerry

回答

1

如果您正在寻找生成崩溃报告,下面显示如何捕获由于异常导致的Mach消息,然后生成崩溃报告。

How does OS X generate a crash report?

+0

谢谢你的回答,@ Rajesh和有趣的链接。不幸的是,主要问题是另一个问题,我需要在信号捕获时深入调试。 OS X通常现在是它的原因,我不是。 – Astoria

1

该技术改变了操作系统每隔几个版本。一般情况下,崩溃记录器使用dyld调试器API枚举进程中的映像,并从每个崩溃缓冲区中提取任何信息。目前,IIRC在数据段中有一个特殊的Mach-O部分,它指向(或包含)一个包含数据的静态变量。

+0

我认为这是一种私人技术,所以苹果保持沉默。谢谢你指出。 – Astoria