objective-c – 有一个Instruments API吗?

前端之家收集整理的这篇文章主要介绍了objective-c – 有一个Instruments API吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以从我的代码中以编程方式设置仪器?例如,我想构建我的代码,其中startTrace可能为当前线程设置特定探测并开始录制,而stopTrace将停止录制.我将使用作为此问题主题的Instruments API编写这些例程的内容.

-(void)myInterestingMethod
{
    [self startTrace];

    // do something interesting and performance critical

    [self stopTrace];
}

如果上述代码不可用,那么设置我自己的DTrace探针是否可行?

解决方法

看起来没有任何直接的东西,但有一个仪器命令行工具.这是一些快速代码,它将调用它并为调用进程提供cpu使用率示例

static void sampleMe() {
    // instruments -t '/Developer/Applications/Instruments.app/Contents/Resources/templates/cpu Sampler.tracetemplate' -p 26838 -l 5000

    NSTask *task = [[NSTask alloc] init];
    [task setLaunchPath:@"/usr/bin/instruments"];
    [task setArguments:[NSArray arrayWithObjects:
                        @"-t",@"/Developer/Applications/Instruments.app/Contents/Resources/templates/cpu Sampler.tracetemplate",@"-p",[NSString stringWithFormat:@"%ld",getpid()],@"-l",@"5000",nil]];
    [task setCurrentDirectoryPath:NSHomeDirectory()];
    [task setStandardInput:[NSPipe pipe]];
    [task setStandardOutput:[NSPipe pipe]];
    [task setStandardError:[NSPipe pipe]];
    [task launch];
    // purposely leak everything since I can't be bothered to figure out lifetimes
}

调用后,名为instrumentscli0.trace的文件将位于您的主目录中.

更新:Instruments 4.0在DTPerformanceSession for iOS应用程序中提供了DTSendSignalFlag.

猜你在找的cocoa相关文章