方法一:
strace -fp pid , 可以跟踪所有线程, 进程的系统调用。- [root@xxxx]strace -p 24091
- Process xxx attached - interrupt to quit
- [ Process PID=24091 runs in 32 bit mode. ]
- futex(0xc5bbbd8, FUTEX_WAIT, 24215 NULL
你的问题不是strace不能跟踪,而是你的线程锁住了。 futex应该是内核里对pthread_mutex_lock实现的一个函数。
方法二(本质同方法一,但更明了):pstree -p pid 可以查看多线程程序的进程树。在针对各个线程,逐个的strace -p pid最后man pstackpstack - print a stack trace of a running process相当于gdb内的bt,打出栈信息。