打印运行进程的栈信息(快照),包括一个进程下的所有线程的栈信息。
pstack pid
pstack是封装了 gdb 功能的 shell 脚本,通过 ” thread apply all bt ” 的命令获得输出所有的线程堆栈信息,再用 sed 进行替换和过滤
# Run GDB, strip out unwanted noise.
$GDB --quiet $readnever -nx /proc/$1/exe $1 <<EOF 2>&1 |
set width 0
set height 0
set pagination no
$backtrace
EOF
/bin/sed -n \
-e 's/^\((gdb) \)*//' \
-e '/^#/p' \
-e '/^Thread/p'通常在服务运行不符合预期时,可以使用 pstack 来确定进程挂起的位置。比如因为死锁导致服务不响应了,使用该命令会找到照成死锁的代码位置。另一个常见的case是定位死循环,可以在同一时间段内多次执行pstack命令,若发现代码栈总是停在同一个位置,那个位置就需要重点关注,很可能就是出问题的地方
如果我们想要查询某一线程已经运行的时间,可以使用以下命令来完成
ps -eLo pid,lwp,pcpu |grep tid
这样可以定位出一些执行得比较慢的线程
1、https://www.cnblogs.com/chenxinshuo/p/11986858.html
2、https://www.cnblogs.com/kongzhongqijing/articles/7685699.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。