Есть ли способ запуска/остановки Инструменты профилирования программно? Мне нужно профилировать только определенный раздел моего кода OS X надежным способом, но я не могу найти документацию для инструментов, которая могла бы рассказать мне, как я могу это сделать. С CHUD/Shark был API-интерфейс программирования и инструмент командной строки для поддержки этого, но я не вижу эквивалент для инструментов где-нибудь? FWIW Я нашел несколько старых сообщений на форуме со всего 2009 года, опасаясь отсутствия функциональности «Инструменты» в этой области, но ничего более недавнего.Как запустить/остановить инструменты (Time Profiler) программно?
1
A
ответ
4
Да. Найдите 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);
Perfect - с C API тоже - только то, что мне было нужно - спасибо! –