【发布时间】:2012-04-28 02:02:07
【问题描述】:
我有一个 Mac 应用商店应用,它在崩溃时会默默消失。它不显示 CrashReporter 对话框,让用户有机会向 Apple 报告崩溃。
我在多台机器上看到相同的行为。是否有任何已知原因导致这种情况发生?
根据TN2123:
此外,如果崩溃的程序作为登录的 GUI 运行 用户,CrashReporter 将向用户显示一个询问他们的对话框 他们是否想向 Apple 提交错误报告
“以登录的 GUI 用户身份运行”是什么意思?窗户必须是可见的吗?
更新:
我在阅读manpage for ReportCrash,发现如下:
对于应用程序崩溃(但不是后台进程崩溃) ReportCrash 将显示一个对话框,通知用户 应用程序意外退出并提供重新打开应用程序 或将报告发送给 Apple。对于开发人员来说,这种行为 对话框可以使用调整 /Developer/Applications/Utilities/CrashReporterPrefs.app 这是 作为开发者工具的一部分安装。
我运行了 CrashReporterPrefs 并将我的 CrashReporter 模式更改为 Developer。当我运行应用程序并触发崩溃时,会显示 CrashReporter 对话框!
所以我想现在的问题是:“应用程序”崩溃和“后台进程”崩溃有什么区别?
【问题讨论】:
-
应用调用的是
exit()还是_exit()?它真的会自行退出,因此它是受控关闭而不是崩溃吗?发生这种情况时是否有任何内容写入控制台日志? -
@KenThomases - 这绝对是一个崩溃,因为会生成崩溃报告。系统日志也显示正在保存的崩溃报告。我遇到的问题只是没有显示 CrashReporter 对话框,这意味着用户永远没有机会提交报告。
-
只有当你在 Xcode 下运行它时,还是当你从 Finder 中自己运行应用程序时才会出现这种情况?
-
@PeterHosey - 当应用程序从 Finder 运行时
-
@pepsi:您的应用是否开启了
LSUIElement或LSBackgroundOnly,或者它是一个普通的面向用户的应用?