2015-12-04 55 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