2

有没有办法以编程方式启动/停止仪器分析?我只需要以可靠的方式分析我的 OS X 代码的特定部分,但我似乎找不到任何有关 Instruments 的文档,这些文档可能会告诉我如何做到这一点。使用 CHUD/Shark 有一个编程 API 和一个命令行工具来支持这一点,但我在任何地方都看不到 Instruments 的等价物?FWIW 我发现了一些 2009 年左右的旧论坛帖子,抱怨该领域缺乏 Instruments 功能,但最近没有。

4

1 回答 1

5

是的。寻找 DTPerformanceSession。它是在 Instruments 4.0 中引入的。它在 Instruments 4.1 中得到了增强

这些文档提供了这个示例代码:

CFStringRef process = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%d"), getpid());
CFErrorRef error = NULL;
DTPerformanceSessionRef session = DTPerformanceSessionCreate(NULL, process, NULL, &error);
DTPerformanceSessionAddInstrument(session, (CFStringRef)@DTPerformanceSession_TimeProfiler, NULL, NULL, &error);
CFMutableArrayRef instrumentIDs = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
CFArrayAppendValue(instrumentIDs, @DTPerformanceSession_TimeProfiler);
DTPerformanceSessionStart(session, instrumentIDs, &error);

// do something in your app

DTPerformanceSessionStop(session, instrumentIDs, &error);
DTPerformanceSessionSave(session, (CFStringRef)@"/tmp/myAppProfile", &error);
DTPerformanceSessionDispose(session, &error);
于 2013-06-25T09:11:12.903 回答