os_signpost在模拟器上有效,但在设备上运行时无效

zum*_*zum 5 xcode instruments ios swift

我想使用仪器跟踪时间的功能之一中包含以下代码行。当我通过仪器在模拟器上运行该应用程序时,使用os_signpost的测量时间就会显示出来,并且我可以准确地测量所需的时间。

然后我切换到设备,相同的代码。但是,由于它在设备上运行,因此不会显示测量的时间。它仅显示以下内容: 在此处输入图片说明

os_signpost时间根本不显示。

因此,所有这些都可以在模拟器上很好地工作,但是当我切换到iPhone设备时却不能。

任何的想法?

let spid = OSSignpostID(log: SignpostLog.myLog, object: myObj as AnyObject)

defer { os_signpost(.end, log: SignpostLog.myLog, name: "operation1", signpostID: spid) }

os_signpost(.begin, log: SignpostLog.myLog, name: "operation1", signpostID: spid)
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 8

确保您没有OS_ACTIVITY_MODE通过环境变量禁用(见下面的截图)

不要这样做,否则路标将不起作用

我删除了它,一切正常 =)

  • 最好将其设置为“默认”而不是“禁用”,设置“启用”将显示每个日志,但禁用也会禁用每个日志(甚至来自 pod 的有用日志),因此最好使用“默认”,因为它只会显示隐藏无用的日志 (2认同)

zum*_*zum 2

结果 os_signpost 不会显示,因为录制设置为立即。将其设置为“延迟”,这样我就可以运行应用程序,然后停止录制,然后仪器显示我在代码中的自定义 os_signpost。

在此输入图像描述

  • @zumzum 将录制模式设置为“延迟”对我不起作用。在设备上进行分析时,我仍然看不到路标。 (4认同)