如何在Mac OS X上使用DTrace在没有系统方法或系统框架的情况下进行检测?
如何使用 DTrace 打印用户定义的类和方法,而不使用系统类、方法比如NSLock、NSThread、NSObject等等?
使用以下D代码,它可以跟踪所有Objective-C方法,包括系统和用户定义的方法:
objc$target:::entry
{
printf("%s %s\n", probemod, probefunc);
}
How do I just print the user-defined class and method using DTrace, without the system class, method, such as NSLock, NSThread, NSObject and so on?
Using the following D code, it can trace all of the Objective-C methods including the system and user-defined:
objc$target:::entry
{
printf("%s %s\n", probemod, probefunc);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
DTrace 仅了解内核和用户空间。它不知道哪些库是系统的一部分,哪些不是。
如果您遵循 Cocoa 约定并正确为所有类添加前缀,那么您可以在探针名称中指定前缀。例如,如果您的前缀是
VIC
:仅当传递的类以 VIC 为前缀时,才会触发这些探测器。
DTrace knows only about kernel and user spaces. It knows nothing about what libraries are part of system and what don't.
If you follow Cocoa conventions and properly prefix all you classes then you can specify the prefix in the name of probe. E.g. if your prefix is
VIC
:These probe will be fired only if the passed class prefixed with VIC.