pstack 跟踪进程栈

1、

此命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。请参见 proc(1) 手册页。

这个命令在排查进程问题时非常有用,比如我们发现一个服务一直处于work状态(如假死状态,好似死循环),使用这个命令就能轻松定位问题所在;可以在一段时间内,多执行几次pstack,若发现代码栈总是停在同一个位置,那个位置就需要重点关注,很可能就是出问题的地方;

 

示例:查看bash程序进程栈:

 1 /opt/app/tdev1$ps -fe| grep bash
 2 tdev1   7013  7012  0 19:42 pts/1    00:00:00 -bash
 3 tdev1  11402 11401  0 20:31 pts/2    00:00:00 -bash
 4 tdev1  11474 11402  0 20:32 pts/2    00:00:00 grep bash
 5 /opt/app/tdev1$pstack 7013
 6 #0  0x00000039958c5620 in __read_nocancel () from /lib64/libc.so.6
 7 #1  0x000000000047dafe in rl_getc ()
 8 #2  0x000000000047def6 in rl_read_key ()
 9 #3  0x000000000046d0f5 in readline_internal_char ()
10 #4  0x000000000046d4e5 in readline ()
11 #5  0x00000000004213cf in ?? ()
12 #6  0x000000000041d685 in ?? ()
13 #7  0x000000000041e89e in ?? ()
14 #8  0x00000000004218dc in yyparse ()
15 #9  0x000000000041b507 in parse_command ()
16 #10 0x000000000041b5c6 in read_command ()
17 #11 0x000000000041b74e in reader_loop ()
18 #12 0x000000000041b2aa in main ()

 

posted @ 2022-06-23 16:29  ainingxiaoguai  阅读(54)  评论(0)    收藏  举报