【问题标题】:Accessing the console data from an iPhone application从 iPhone 应用程序访问控制台数据
【发布时间】:2011-07-18 16:31:08
【问题描述】:

当我的应用程序崩溃时,我想保存最新的控制台以进行调试(尤其是读取系统消息,例如无法识别的选择器)

是否可以通过编程方式访问控制台?

更新:

我在文档中找到了答案:使用 STDERR_FILENO。

“将错误消息记录到 Apple 系统日志工具(参见 man 3 asl)。如果 STDERR_FILENO 文件描述符已被重定向远离默认值或将转到 tty,它也将被写入那里。”

【问题讨论】:

    标签: iphone ios debugging sdk console


    【解决方案1】:

    听起来您想更改标准输出流的目的地。我从未在 iOS 中尝试过,但我希望能够使用freopen() 来做到这一点。这是a SO question that may help

    您还需要在应用中构建一些调试功能,以便轻松恢复输出。例如,您可以将其发布到网络服务器,或者让应用通过电子邮件将其发送给您。

    【讨论】:

    • 它不适用于默认的 NSLog 消息。它确实创建了文件,但它是空的,所有消息仍显示在控制台中。我猜 NSLog 使用的是不同的方法 :(
    • 其实你是对的:)。我正在重定向标准输出。当我尝试重定向 stderr - 它有效。谢谢!
    • @Gilad 您是否在代码中使用 freopen 发布到 AppStore?审核有问题吗?我想将我的应用程序的所有输出重定向到 /dev/null。恐怕苹果会拒绝我的应用程序用于此类用途。请看stackoverflow.com/questions/32780617/…
    【解决方案2】:

    当您的应用在设备中崩溃时,系统会保存崩溃日志。插入设备后,启动 XCode,打开“Organizer”窗口并单击设备。然后在左侧查找您的设备,然后单击“崩溃日志”。结合构建时生成的 .dSYM 文件中的信息,您通常可以恢复应用程序崩溃的方式和位置。如果您真的只想在崩溃时将信息保存在 XCode 的控制台窗口中,只需在控制台窗口内单击,按 Cmd-A(全选)和 Cmd-C(复制),然后粘贴到文本编辑器窗口中.

    【讨论】:

    • 我的应用确实有一个崩溃日志,但我也想要访问控制台,因为它有时包含与崩溃相关的有用信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    相关资源
    最近更新 更多