【问题标题】:Where is stdout for a Mac App?Mac App 的标准输出在哪里?
【发布时间】:2010-02-03 23:24:51
【问题描述】:

以前 stdout 进入控制台日志,由 Console.app 显示。我在使用 firefox 插件时遇到了一些问题(请参阅其他问题,对垃圾邮件感到抱歉...),我试图使用 printfs 至少查看我是否正在启动我的插件。

我今天才注意到我的控制台日志自 1 月 6 日以来没有更新。(是的,我过去一个月一直在使用这台机器。)现在,我不是唯一使用控制台日志的程序,所以所有这些消息都必须发送到其他地方。

有人知道在哪里吗?

问题在于 syslogd 已损坏。现在已经修复了。

【问题讨论】:

  • 这可能属于 superuser.com,不确定...但我也注意到了同样的问题...
  • 嗯,这是对我的编程,因为我正在使用 printf 到达那里......但是,是的,超级用户可能知道更多......你的什么时候开始的?

标签: macos console stdout


【解决方案1】:

启动应用程序并运行“lsof | grep ”后,它显示文件描述符 0、1 和 2 都是 /dev/null

【讨论】:

    【解决方案2】:

    解决方案:问题不在于标准输出没有进入控制台。问题是控制台没有被写入,因为 syslogd 被窃听了。由于某种原因,Syslogd 被沙盒化,因此自 1 月 6 日以来没有向控制台写入任何内容。

    解决方案是重新注释掉 LaunchDaemons/com.apple.syslogd.plist 的“如果您想沙箱化 syslogd,请取消注释”部分。

    解决方案来自 superuser.com.... 谢谢!

    【讨论】:

    • 你有超级用户问题的链接吗?
    • 另外,我没有/看到那个部分。该文件为 bplist 格式。
    【解决方案3】:

    printf 应该转到 Console.app。听起来你的好像坏了。

    调试插件的好方法是将 FireFox 设置为 XCode 项目的自定义可执行文件,并在调试器中运行。然后 XCode 控制台将捕获输出。 在这种情况下,您也只需使用断点来查看您的插件是否正在加载而不是 printf。

    【讨论】:

    • 也许我之前做错了什么,但在过去,当我尝试这样做时,xcode 感到困惑,因为 firefox 没有使用符号编译...
    • 您不会从 Firefox 获得符号,但您可以在插件代码中设置断点。
    • 当我尝试这个时,firefox 崩溃,询问您是否要重新启动,然后再次崩溃,泡沫冲洗重复。
    • 请注意(对于那些在 2016 年加入我们的人):从 Mountain Lion 及更高版本开始,在应用程序中登录到标准输出不再出现在 Console.app 中。有关详细信息,请参阅此相关问题:how to get stdout into Console.app
    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多