【问题标题】:Cocoa app tries to launch lldb on crash?Cocoa 应用程序尝试在崩溃时启动 lldb?
【发布时间】:2013-12-18 09:21:20
【问题描述】:

一些用户报告说,有时当我的应用崩溃时,会收到如下消息框:

The lldb command requires the command line developer tools. Would you like to install the tools now?

崩溃 (SIGABRT) 看起来像是我代码中某处的竞争条件。但是为什么当这种情况发生时它似乎试图启动lldb?我从来没有见过这样的东西,它似乎对几个用户来说相当孤立,而且我无法在本地复制 - 尽管我确实安装了开发者工具。

这几乎就像在 .NET 中进行 JIT 调试,但我从未听说过在 Cocoa 中这样做,而且我在 Google 上的搜索也没有结果。


编辑:

如果我运行ps,我们可以同时看到Problem ReporterInstall Command Line Developer Tools

19582   0.0  0.4  2568032  33224   ??  S    10:22AM   0:00.72 /System/Library/CoreServices/Problem Reporter.app/Contents/MacOS/Problem Reporter
19579   0.0  0.2  2531748  13276   ??  S    10:22AM   0:00.16 /System/Library/CoreServices/Install Command Line Developer Tools.app/Contents/MacOS/Install Command Line Developer Tools

列表中没有其他可疑之处。如果我使用-f 开关运行ps,我可以看到Install Command Line Developer Tools 的父进程是launchd

【问题讨论】:

    标签: macos cocoa debugging osx-mavericks lldb


    【解决方案1】:

    Apple 提供的 CrashReporter 工具不会尝试将调试器连接到崩溃的程序。曾经有一个选项可以在 Leopard 或附近执行此操作(默认情况下未启用),但 Mountain Lion(甚至可能是 SnowLeopard)关闭了该功能。我认为不可能在 Leopard 上安装任何带有 lldb 的 Xcode,因此似乎不太可能是旧的 Apple CrashReporter 试图将调试器连接到应用程序。 OTOH,可以用另一个可以做到这一点的工具替换 Apple 的 CrashReporter 工具,并且一些第三方供应商会这样做。也许这就是正在发生的事情?

    如果您让看到此内容的用户在对话框出现时向您发送“ps auwwx”的输出,您或许能够找出罪魁祸首。

    【讨论】:

    • 感谢您的评论,这很有趣。我将尝试获取正在运行的进程的输出...
    • 我在此信息中进行了编辑。这似乎是导致此问题的标准 Apple 问题报告器。我确实引用了一些在运行时修改问题报告器的工具,但没有在像 10.9 这样新的操作系统上运行...
    • 我看不出这在 10.9 上是如何发生的。这很奇怪,绝对值得提交一个关于它的错误。
    • 我已经打开了 Apple 的支持事件
    猜你喜欢
    • 1970-01-01
    • 2017-02-07
    • 2013-06-24
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    相关资源
    最近更新 更多