方法一:
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 pstack
pstack - print a stack trace of a running process
相當於gdb內的bt,打出棧信息。