0

我试图弄清楚为什么在 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 的标准错误(已编辑以删除目录):

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

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

4

0 回答 0