gpt4 book ai didi

macos - Mac OS 信号处理/崩溃报告

转载 作者:行者123 更新时间:2023-12-03 18:07:26 26 4
gpt4 key购买 nike

在 Mac OS 中,导致信号(通过空指针异常或类似的东西)的应用程序通常会显示标准的 Mac OS 崩溃对话框,包括一个很好的堆栈跟踪信号发生的位置。如果您有崩溃报告,这使您可以轻松找出代码中出现问题的位置并进行修复。

mac os crash report

此堆栈跟踪很容易查找并找出执行崩溃的位置。

但是,标准的 Mac OS 崩溃报告会提示用户将其发送给 Apple,这没有用,因为用户只会按下按钮并假设我们收到了崩溃报告,而实际上我们并没有。我想改为显示我自己的崩溃报告和堆栈跟踪,告诉用户将其通过电子邮件发送给我,或自动将其提交到 Web 表单或类似的东西。

如何获取此类信号的堆栈跟踪?我尝试了以下方法:

  • 已安装未捕获的异常处理程序 - 没有变化,我仍然会看到常规的 Mac OS 崩溃对话框。

  • 围绕程序进行@try/@catch - 没有变化,我仍然看到常规的 Mac OS 崩溃对话框。

  • 使用调用时抛出异常的 signal() 安装信号处理程序 - 我可以捕获异常并从中获取调用堆栈,但堆栈跟踪显示信号处理程序并且不如堆栈跟踪有用请参阅上面的 Mac OS 错误。

enter image description here

此图中编号为 3 的行是调用信号处理程序的地方 - 它不会提供与标准崩溃报告相同的堆栈跟踪,即使您忽略了明显的“这是我抛出异常的地方”位.

我如何复制标准崩溃报告的行为,它会为我提供生成信号的调用堆栈?

最佳答案

我强烈推荐PLCrashReporter .它处理未捕获的异常和致命信号,并生成类似于您在 Apple 崩溃对话框中看到的崩溃报告。您可以支付各种服务来分析崩溃(按版本和通用调用堆栈分组)。或者您可以自己运行服务器。一项开源服务是 QuicyKit .

关于macos - Mac OS 信号处理/崩溃报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com