如何从OS X错误日志诊断应用程序崩溃?

时间:2020-03-06 14:51:23  来源:igfitidea点击:

简短的问:这种例外是什么意思? " EXC_BAD_ACCESS(0x0001)"

问:我如何使用此错误日志信息(以及我在此处省略的线程详细信息)诊断此应用程序崩溃? (注意:我对崩溃日志或者OS内核不了解。)

在这种情况下,我的电子邮件客户端(Eudora)每次启动时都会立即崩溃,而无需进行明显的系统更改。

Host Name:      [name of Mac]
Date/Time:      2008-09-28 14:46:54.177 -0400
OS Version:     10.4.11 (Build 8S165)
Report Version: 4
Command: Eudora
Path:    /Applications/[...]/Eudora Application Folder/Eudora.app/Contents/MacOS/Eudora
Parent:  WindowServer [59]
Version: 6.2.4 (6.2.4)
PID:    231
Thread: 0
Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_PROTECTION_FAILURE (0x0002) at 0x00000001

解决方案

要回答简短问题:EXC_BAD_ACCESS意味着非法的内存访问。这意味着该程序尝试使用其虚拟地址空间之外的内存位置(大致来说,它是从OS内核请求的内存区域)。这就是Unix人们通常所说的"分段错误"(segfault),而Windows人们通常所说的就是"访问冲突"(AV)或者"一般保护错误"(GPF)。 (是的,我们可能已经知道了。但是我只是确定...)

崩溃报告是否说出正在引用的内存地址?该报告是否包括调用堆栈或者核心转储?所有这三个都是非常有价值的,尤其是核心转储,因为我们可以将其加载到调试器中并从异常的位置重新启动程序。并且,如果内存地址似乎完全不可用(在虚拟地址的上半部分,或者非常接近0,则说明问题出在哪里)。

仅仅为了完成Michael的分析崩溃日志的答案,我们就不应该这样做。 eudora程序员搞砸了(或者提供eudora程序员用来制作eudora的工具的人)。最好的办法是将崩溃日志的全部内容复制并粘贴到邮件客户端中(尝试使用MAIL,因为我们现在似乎无法使用eudora,哈哈哈),并将其发送至eudora-support @ eudora.com以及正在发生的事情的简短描述。找出问题所在,这是他们的工作。