CrashReporter对话框在Mac应用程序崩溃时不显示
问题描述:
我有一个Mac应用商店应用程序,当它崩溃时就会悄然消失。它没有显示CrashReporter对话框,让用户有机会向Apple报告崩溃。CrashReporter对话框在Mac应用程序崩溃时不显示
我在多台机器上看到相同的行为。有什么已知的原因为什么会发生这种情况?
根据TN2123:
此外,如果崩溃的程序正在运行的登录界面 用户,CrashReporter始终会向用户呈现一个对话框,要求他们 是否要提交bug向Apple报告
“以登录的GUI用户身份运行”是什么意思?窗口是否必须可见?
更新:
我正在读manpage for ReportCrash,并发现如下:
对于应用程序崩溃(但不包括后台进程崩溃) ReportCrash将显示一个对话框,通知用户该 应用程序意外退出并提供重新打开应用程序 或将报告发送给Apple。对于开发人员,可以使用作为开发人员工具一部分安装的 /Developer/Applications/Utilities/CrashReporterPrefs.app( )来调整此 对话框的行为。
我运行了CrashReporterPrefs并将我的CrashReporter模式更改为Developer。当我运行应用程序并触发崩溃时,显示CrashReporter对话框!
所以我想现在的问题是:“应用程序”崩溃和“后台进程”崩溃之间的区别是什么?
答
如果您的应用程序使用LSUIElement或LSBackgroundOnly,这是确定是否显示Crash Reporter的“后台进程”。 (其他“后台进程”包括UNIX-land守护进程,例如Apache Web服务器,以及从SSH或telnet连接开始的进程。)
该应用调用'exit()'还是'_exit()'?它实际上是否会退出,所以这是一个受控关机而不是崩溃?发生这种情况时,有没有写入控制台日志? – 2012-04-28 03:23:49
@KenThomases - 这绝对是一个崩溃,因为崩溃报告是生成的。系统日志显示保存的崩溃报告。我遇到的问题只是CrashReporter对话框不显示,这意味着用户永远不会有机会提交报告。 – pepsi 2012-04-28 03:42:48
这是仅当你在Xcode下运行它时,还是当你从Finder自己运行应用程序时? – 2012-04-28 06:19:46