2013-06-25 3 views
1

Есть ли способ запуска/остановки Инструменты профилирования программно? Мне нужно профилировать только определенный раздел моего кода OS X надежным способом, но я не могу найти документацию для инструментов, которая могла бы рассказать мне, как я могу это сделать. С CHUD/Shark был API-интерфейс программирования и инструмент командной строки для поддержки этого, но я не вижу эквивалент для инструментов где-нибудь? FWIW Я нашел несколько старых сообщений на форуме со всего 2009 года, опасаясь отсутствия функциональности «Инструменты» в этой области, но ничего более недавнего.Как запустить/остановить инструменты (Time Profiler) программно?

ответ

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); 
+0

Perfect - с C API тоже - только то, что мне было нужно - спасибо! –