我已经尝试了所有可能的字段,但找不到调用函数的次数。
此外,我没有得到 Self
和 #Self
。这两个数字是什么意思?
最佳答案
还有其他几种方法可以实现这一点。一个显然是创建一个静态命中计数器和一个发出并递增计数器的 NSLog。虽然这是侵入性的,但我找到了一种使用 lldb 执行此操作的方法。
- 设置断点
- 执行程序,直到您第一次遇到断点,并在您遇到的行的右侧记下断点号(例如“线程 1:断点 7.1”,注意 7.1)
- 上下文单击断点并选择“编辑断点”
- 将条件留空并选择“添加操作”
- 选择“调试器命令”
- 在命令框中,输入“breakpoint list 7.1”(使用步骤 2 中断点的断点编号)。如果您使用的是 gdb,我相信您可以使用“info break”。
- 勾选“评估后自动继续”选项
- 继续
现在,llvm 不会停止,而是会发出有关断点的信息,包括已通过的次数。
至于 Glenn 和 Mike 之间关于上一个答案的讨论,我将描述一个性能问题,其中函数执行计数很有用:我的应用程序中有一个特定的操作,每次执行该操作时性能都会显着下降。 Instruments 时间分析器显示,每次执行操作时,特定功能花费的时间是之前的两倍,直到如果重复执行操作,应用程序很快就会挂起。通过计数,我能够确定每次执行时,该函数被调用的次数是上次执行时的两倍。然后很容易找到原因,原来是有人在每次事件执行时在 NotificationCenter 中重新注册通知。这具有使每次执行时响应处理程序调用次数加倍的效果,从而使函数每次的“成本”加倍。知道它翻倍是因为它被调用了两倍,而不是因为性能越来越差,这让我查看了调用序列,而不是因为函数本身可能会随着时间的推移而退化。
关于ios - 如何在 Instruments Time Profiler 中显示调用函数的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787428/