在Linux中,可以使用backtrace()库调用来获取回溯,但是它仅返回当前线程的回溯。假设我知道它是TID(或pthread_t)并且可以保证它可以入睡,是否有任何方法可以获取其他线程的回溯?
看来libunwind(http://www.nongnu.org/libunwind/)项目可以提供帮助。问题是CentOS不支持它,因此我不希望使用它。
还有其他想法吗?谢谢。
借助backtrace进行信号处理可以解决您的目的。
我的意思是,如果您具有线程的PID,则可以对该线程发出信号。在处理程序中,您可以使用backtrace。由于处理程序将在该特定线程中执行,因此回溯将有您需要的输出。