2011-05-20 2 views
1

disons que je suis dans gdb et une pile d'appel comme celui-ci:Recherche du créateur du thread écrasé sous OS X/gdb?

Thread 24 (process 6449): 
#0 0x994010e2 in semaphore_wait_signal_trap() 
#1 0x9942ec9c in _pthread_cond_wait() 
#2 0x9947745f in pthread_cond_wait() 
#3 0x92ed1ccd in jpegdecompress_MPLoop() 
#4 0x9942e7fd in _pthread_start() 
#5 0x9942e682 in thread_start() 

Comment puis-je savoir qui a créé ce fil?

Répondre

1

En général, vous ne pouvez pas: la bibliothèque pthread n'a aucune raison d'enregistrer et de stocker cette information.

Dans les applications qui créent seulement une poignée de fils, cela est généralement pas nécessaire soit - si vous savez que c'est le fil de jpegdecompressor qui se est écrasé, et vous créez un seul d'entre eux, alors il est trivial de dire ce fil a été créé.

Si vous avez vraiment besoin de la réponse, vous devrez enregistrer la trace de la pile au moment de l'appel pthread_create, et passer cela au nouveau thread pour économiser dans certains threads locaux.

Questions connexes