Instruments
# Instruments

Instruments (vormals Xray) ist eine Anwendung zum Messen der Performance einer Anwendung und zur Analyse der Engpässe, das von Apple als Teil der Xcode Tools ausgeliefert wird. Die erste Version von Instruments erschien im Herbst 2007 zusammen mit Xcode 3.0 und Mac OS X Leopard 10.5. Mit Xcode 3.1 erschien eine neue Version von Instruments, die die Performance von iPhone-Anwendungen messen konnte. Instruments basiert auf der DTrace-Technologie aus OpenSolaris von Sun, die auf Mac OS X portiert wurde.

## Funktionen

Mit Instruments kann ein Entwickler unter anderem folgendes messen und aufzeichnen:

* CPU-Aktivität von Prozessen und einzelnen Threads
* Speicherverbrauch, Speicherlecks
* Datei- und Netzwerkzugriffe
* Grafikleistung (nur bei OpenGL)
* Benutzereingaben (Tastatur, Maus)

Die einzelnen Messfunktionen sind in sogenannte Instrumente (daher der Name) eingeteilt. Der Entwickler kann die für seine Messung nötigen Instrumente in sein Messfenster einfügen und dort auch konfigurieren. Entwickler können mit dem integrierten Instrument Builder auch eigene Instrumente erstellen.

Wird eine Aufnahme gestartet, lädt und startet Instruments die gewünschte Binärdatei bzw. hängt sich an einen bereits bestehenden Prozess an, und misst dort die gewünschten Werte. Diese werden in einer Zeitleiste als Graph dargestellt; optional werden die Werte erst gemessen und danach erst gezeichnet ("deferred mode").

Sobald die Aufnahme beendet oder das Programm geschlossen wird, kann der Entwickler mit der Maus zu einem bestimmten Zeitpunkt in der Zeitleiste fahren und den Code, der zu dieser Zeit ausgeführt wurde, näher analysieren (z. B. um ein Speicherleck zu isolieren). Die ausgeführten Aktionen können auch immer wieder wiederholt werden, damit der Entwickler nicht mehrfach immer wieder z. B. die gleichen Knöpfe drücken muss, sondern das Verhalten seiner Anwendung analysieren kann. Die Messungen können auch abgespeichert werden; je nach Länge der Aufnahme und gewählten Instrumenten kann diese Datei jedoch mehrere Gigabyte groß werden.

