您可以使用 DTrace 来监测运行中的应用程序, 以查看被调用的方法和类别。 您可以在命令行使用 DTrace 来很容易地监测在模拟器中运行的 iOS 应用程序。 首先, 您需要使用 < code> ps code > 找到应用程序的 PID, 然后您就可以运行一个 Dtrace 探测器, 如 :
sudo dtrace -q -n objc1234:::entry { printf("%s %s
", probemod, probefunc); }
其中 1234 是应用程序的处理代号 。
这将产生看起来如下的产出:
UIStatusBarItemView -isVisible
UIStatusBarLayoutManager -_positionAfterPlacingItemView:startPosition:
UIView(Geometry) -frame
CALayer -frame
UIStatusBarLayoutManager -_startPosition
UIView(Geometry) -bounds
CALayer -bounds
UIStatusBarItemView -standardPadding
UIStatusBarItem -appearsOnLeft
UIStatusBarItem -leftOrder
如果您只有兴趣追踪单类,例如 UIView
, 您可以使用:
sudo dtrace -q -n objc1234:UIView::entry { printf("%s %s
", probemod, probefunc); }
如果您想要追踪所有类中 dealloc
的所有电话, 您将会使用 :
sudo dtrace -q -n objc1234::-dealloc:entry { printf("%s %s
", probemod, probefunc); }
显然,您可以将这些组合起来,只看到 UIView
dealloc
:
sudo dtrace -q -n objc1234:UIView:-dealloc:entry { printf("%s %s
", probemod, probefunc); }
如果您想要能够区分某类的特定对象, 您也可以使用下列方式打印对象的内存地址( self
):
sudo dtrace -q -n objc1234:UIView:-dealloc:entry { printf("%s (0x%p) %s
", probemod, arg0, probefunc); }
戴特瑞斯的力量非常强大 比我在这里展示的要大得多