【问题标题】:How to start/stop Instruments (Time Profiler) programatically?如何以编程方式启动/停止仪器(时间分析器)?
【发布时间】:2013-06-21 22:34:47
【问题描述】:

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

【问题讨论】:

    标签: xcode macos profiling instruments xcode-instruments


    【解决方案1】:

    是的。寻找 DTPerformanceSession。是introduced with Instruments 4.0。是enhanced in 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);
    

    【讨论】:

    • 完美 - 也有 C API - 正是我需要的 - 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2010-10-02
    • 2016-04-17
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 2014-02-27
    相关资源
    最近更新 更多