在OS X / gdb中查找崩溃线程的创建者?

时间:2011-05-20 08:45:53

标签: macos gdb pthreads

让我说我在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 个答案:

答案 0 :(得分:1)

一般情况下,您不能:pthread库没有任何理由记录和存储该信息。

在只创建少数线程的应用程序中,通常也不需要 - 如果你知道它是崩溃的jpegdecompressor线程,而你只创建其中一个,那么告诉哪里很简单该线程已创建。

如果你真的需要答案,你必须在pthread_create调用时记录堆栈跟踪,并将其传递给新线程以保存在某些线程本地。