2011-05-20 80 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调用时记录堆栈跟踪,并将其传递到新线程以保存在某个线程本地。