让我说我在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 ()
如何找出谁创建了该线程?
答案 0 :(得分:1)
一般情况下,您不能:pthread库没有任何理由记录和存储该信息。
在只创建少数线程的应用程序中,通常也不需要 - 如果你知道它是崩溃的jpegdecompressor线程,而你只创建其中一个,那么告诉哪里很简单该线程已创建。
如果你真的需要答案,你必须在pthread_create
调用时记录堆栈跟踪,并将其传递给新线程以保存在某些线程本地。