2011-05-20 28 views
1

比方說,我在gdb,並有一個這樣的調用堆棧:查找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() 

我如何找出誰創建線程?

回答

1

一般而言,您不能:pthread庫沒有任何理由記錄和存儲該信息。

在創造只有線程屈指可數,應用這通常不需要任何 - 如果你知道它的jpegdecompressor線程崩潰,你只創建其中之一,那麼它的瑣碎告訴哪裏該線程已創建。

如果您真的需要這個答案,您必須在pthread_create調用時記錄堆棧跟蹤,並將其傳遞到新線程以保存在某個線程本地。