gpt4 book ai didi

objective-c - 有仪器 API 吗?

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:01 25 4
gpt4 key购买 nike

是否可以设置一个 Instruments 从我的代码中以编程方式运行?例如,我想将我的代码构造成这样,其中 startTrace 可能会为当前线程设置一个特定的探测器并开始记录,而 stopTrace 将停止记录。我将使用作为该问题主题的 Instruments API 编写这些例程的内容。

-(void)myInterestingMethod
{
[self startTrace];

// do something interesting and performance critical

[self stopTrace];
}

如果以上方法不可用,设置我自己的 DTrace 探测是否是一种可行的替代方法?

最佳答案

看起来没有任何直接的东西,但是有一个instruments 命令行工具。这里有一些快速+肮脏的代码,将调用它并为调用进程采样 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 提供 DTSendSignalFlag在 iOS 应用程序的 DTPerformanceSession 中。

关于objective-c - 有仪器 API 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com