2010-01-13 5 views
16

In Windows ist es möglich, den Thread-Namen über this code einzustellen. Der Threadname wird dann in Debuggern angezeigt.Wie Sie einen Thread-Namen in MacOSX setzen

In MacOSX habe ich mehrere Hinweise gesehen, die darauf hinweisen, dass es Threadnamen gibt. Ich denke die Klasse NSThread hat auch ein name-Attribut. Mein Ziel ist, dass ich den Thread-Namen in meiner C++ - Anwendung festlegen und in Xcode/gdb sehen kann.


Andere verwandte Fragen:

+0

Kann ich nur fragen Warum hast du die Antwort akzeptiert, die du getan hast? Es beantwortet deine Frage nicht, aber es gibt andere, die das tun? – deanWombourne

+0

@deanWombourne: Zum Zeitpunkt des Schreibens hatte ich MacOSX 10.6 nicht. Und es gab Thread-Namen, also hat die andere Antwort das für mich nicht beantwortet. Aber ja, jetzt ist dieses Thema wahrscheinlich veraltet. – Albert

+0

Handlich für Leute, die versuchen, Sachen für Leopard zu bauen, obwohl! – SamB

Antwort

29

Ich empfehle die folgenden:

[[NSThread currentThread] setName:@"My thread name"]; // For Cocoa 
pthread_setname_np("My thread name"); // For GDB. 

(Sie werden pthread.h müssen enthalten) eine Behandlung in XCode Works 3.2.3 (zumindest für iPhone-Entwicklung)

+2

Bedeutung nichts für ungut zu cdespinosa (hallo Chris! :), es scheint mir seltsam, dass seine Nicht-Antwort akzeptiert wurde. DaveH hat die Frage tatsächlich beantwortet (und ich war in der Lage, seine gelieferte Antwort zu verwenden, um MEIN Problem zu lösen :) 1) – Olie

+0

Ja, ich stimme zu. Das klingt nach einer viel besseren Antwort. Macht mehr Sinn –

+2

Btw., 'Pthread_setname_np' ist auch auf vielen anderen Plattformen verfügbar. Die Schnittstelle ist jedoch normalerweise unterschiedlich. Siehe [hier] (http://Stackoverflow.com/a/7989973/133374) für einen guten Überblick. – Albert

2

Welche Version von Xcode verwenden Sie? Thread-Namen werden nur in Mac OS X 10.6 und Xcode 3.2 unterstützt.

+0

Ich verwende OSX 10.5 und Xcode 3.1.4. Also keine Chance dort? Keine Chance in OSX 10.5? Im Dokument für NSThread: setName steht es in Mac OS X 10.5 und höher zur Verfügung. – Albert

+0

Die Dokumente werden ab 10.5 unterstützt. –

+1

Ja, aber der Threadname wird nicht von der Objective-C-Ebene auf den Laufzeitthread-Layer in 10.5 propagiert, da die API pthread_setname_np nicht vor 10.6 existiert und Sie Xcode 3.2 benötigen, um den Threadnamen abzurufen und anzuzeigen. – cdespinosa

Verwandte Themen