OSX中的Breakpad:崩溃进程的检查失败

时间:2014-04-21 18:45:39

标签: macos mach google-breakpad

我正在试图弄清楚为什么在OSX 10.8上检查崩溃的进程失败了。我正在将Breakpad添加到Mac版的一个非常庞大而复杂的专业应用程序中。我目前正在使用Breakpad r1035。由于我无法控制的情况,我的应用程序是使用XCode 3.2.6(GCC 4.2)构建的。这可能是一个很长的镜头,因为最近SO下的Breakpad标签上没有很多活动。

我已经完成了一些挖掘Breakpad代码以确定故障发生的确切位置。 generator.Write(...)中的Inspector::InspectTask()调用返回false。在Write()内,对WriteMemoryListStream(...)的调用会导致ReadTaskMemory(...)进行mach_vm_read(...)系统调用,该调用稍后会被Inspector报告为:Error writing minidump - errno=No such process

是否存在崩溃过程不存在的原因,或者为什么Inspector无法正确检测到崩溃过程?我尝试将@BREAKPAD_SEND_AND_EXIT设置更改为“否”,但这没有任何区别。每次导致崩溃时都会生成一个2MB .dmp文件,其中包含非人类可读文本。

当我引发崩溃时,这是来自Inspector的标准输出:

message ID = 0
exception_type = 1
exception_code = 1
exception_subcode = 0
remote_task = 7171
crashing_thread = 6915
handler_thread = 6659
ack_port_ = 6403
parameter count = 18
Inspector: sent acknowledgement (os/kern) successful (0)

当我引发崩溃时(编辑删除目录),这是来自Inspector的stderr:

Suspended Remote task
Writing minidump to directory (<correct location>)
minidump path (<correct location>/DD6D8905-F55F-4035-96BA-25460453F236.dmp)
Error writing minidump - errno=No such process
Resumed remote task
Inspector: trying to send acknowledgement to port 6403
Inspection of crashed process failed

在向Mac上的应用程序添加Breakpad时,是否有人遇到类似问题?或者看到mach_vm_read(...)以类似的方式失败了?

0 个答案:

没有答案