2010-01-13 14 views
16

En Windows, es posible establecer el nombre de subproceso a través de this code. El nombre del hilo se muestra luego en los depuradores.cómo establecer un nombre de subproceso en MacOSX

En MacOSX, he visto varias sugerencias que indican que hay nombres de subprocesos. Creo que la clase NSThread también tiene un nombre-atributo. Mi objetivo es establecer el nombre del hilo en mi aplicación C++ y verlo en Xcode/gdb.


Otras preguntas relacionadas:

+0

¿Puedo preguntar ¿Por qué aceptaste la respuesta que respondiste? No responde tu pregunta, pero hay otras que sí? – deanWombourne

+0

@deanWombourne: En el momento de escribir este artículo, no tenía MacOSX 10.6. Y había nombres de hilos, por lo que la otra respuesta no respondió eso para mí. Pero sí, ahora este problema probablemente esté desactualizado. – Albert

+0

¡Sin embargo, es muy útil para las personas que intentan construir cosas para Leopard! – SamB

Respuesta

29

recomiendo lo siguiente:

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

(Usted tendrá que incluir pthread.h) funciona un convite en Xcode 3.2.3 (al menos para el desarrollo del iPhone)

+2

Lo que significa no ofender a cdespinosa (hola Chris! :), me parece extraño que su no respuesta haya sido aceptada. DaveH en realidad respondió la pregunta (y pude usar la respuesta que me proporcionó para resolver MI problema +1 :) – Olie

+0

Sí, estoy de acuerdo. Esto suena como una respuesta mucho mejor. Tiene más sentido –

+2

Por cierto, 'pthread_setname_np' también está disponible en muchas otras plataformas. Sin embargo, la interfaz suele ser diferente. Consulte [aquí] (http://stackoverflow.com/a/7989973/133374) para obtener una buena descripción general. – Albert

2

¿Qué versión de Xcode está usando? Los nombres de subprocesos solo son compatibles con Mac OS X 10.6 y Xcode 3.2.

+0

Estoy usando OSX 10.5 y Xcode 3.1.4. ¿Así que no hay posibilidad allí? ¿Ninguna posibilidad en absoluto en OSX 10.5? En el documento para NSThread: setName, dice disponible en Mac OS X v10.5 y posterior. – Albert

+0

Los documentos dicen compatibles desde 10.5 en adelante. –

+1

Sí, pero el nombre del subproceso no se propaga desde la capa Objective-C a la capa de subprocesos en tiempo de ejecución en 10.5, porque la API pthread_setname_np no existe hasta 10.6, y necesita Xcode 3.2 para buscar y mostrar el nombre del subproceso. – cdespinosa

Cuestiones relacionadas