ios 苹果iPhone -调试与控制台-< private>?

xeufq47z  于 12个月前  发布在  iOS
关注(0)|答案(3)|浏览(209)

我正在使用控制台调试iPhone 7

  • 我在大多数信息中看到<private>。我能够访问Xcode模拟器iPhone 7设备,它不显示<private>。但是我需要在手机上调试一个passkit通行证。

我想我的设备开发证书是在钥匙链-我是愚蠢的?
如何在访问完整信息的情况下调试真实的iPhone?

6rqinv9w

6rqinv9w1#

详细信息来自Apple's Unified logging。如果调试消息是动态字符串,默认情况下将显示<private>
为了让数据打印出实际的字符串,在发送到日志记录时必须将字符串声明为public。例如,在Swift中,这将显示发送给记录器的文本,因为它是一个静态字符串:

static let logger = OSLog(subsystem: "com.company.myApp", category: "myCategory")
os_log(logger, "Some text that will display correctly");

但是,这将显示Some string: <private>

os_log(logger, "Some string: %s", "text that will display <private>")

为了使文本按预期显示,需要使用public标记声明:

os_log(logger, "Some string: %{public}s", "text that will display as expected")

如果您只是查看第三方应用程序的日志,那么默认情况下您将无法查看数据。
但是,有some that report可以使用log命令行实用程序查看编辑的数据:

sudo log config --mode "private_data:on"

据我所知,苹果没有记录这一点。
Catalina
请注意,上述未记录的开关随着 Catalina 的引入而被打破。但是,现在可以使用简单的签名配置文件来显示“私人”消息,如霍华德奥克利所述,here

oknwwptz

oknwwptz2#

没有单一的设置,你可以改变iOS日志,因为有macOS。
如果您运行的是iOS的beta版本,则私人日志信息似乎会被收集,因此这是一种选择。
另一个选项是查看this page上是否有包含所需日志记录的概要文件。
一旦你安装了相关的配置文件,你就会看到之前的<private>信息出现在iOS控制台日志中。
在我的情况下,我能够使用“基带”配置文件,以启用来电显示日志,而工作的CallKit扩展。
要禁用私人日志,您只需从设备上的常规设置中删除配置文件。

i7uq4tfw

i7uq4tfw3#

您可以将其添加到Info.plist,以便在没有附加调试器时不编辑参数:

<key>OSLogPreferences</key>
<dict>
    <key>your.subsystem.key.here</key>
    <dict>
        <key>your-category-here</key>
        <dict>
            <key>Enable-Private-Data</key>
            <true/>
        </dict>
    </dict>
</dict>

相关问题