pstack 跟蹤程序棧

2021-09-29 13:53:04 字數 1075 閱讀 7812

此命令可顯示每個程序的棧跟蹤。pstack 命令必須由相應程序的屬主或 root 執行。可以使用 pstack 來確定程序掛起的位置。此命令允許使用的唯一選項是要檢查的程序的 pid。請參見 proc(1) 手冊頁。

這個命令在排查程序問題時非常有用,比如我們發現乙個服務一直處於work狀態(如假死狀態,好似死迴圈),使用這個命令就能輕鬆定位問題所在;可以在一段時間內,多執行幾次pstack,若發現**棧總是停在同乙個位置,那個位置就需要重點關注,很可能就是出問題的地方;

示例:檢視bash程式程序棧:

tdev1 7013 7012 0 19:42 pts/1 00:00:00 -bash

tdev1 11402 11401 0 20:31 pts/2 00:00:00 -bash

tdev1 11474 11402 0 20:32 pts/2 00:00:00 grep bash

#0 0x00000039958c5620 in __read_nocancel () from /lib64/libc.so.6

#1 0x000000000047dafe in rl_getc ()

#2 0x000000000047def6 in rl_read_key ()

#3 0x000000000046d0f5 in readline_internal_char ()

#4 0x000000000046d4e5 in readline ()

#5 0x00000000004213cf in ?? ()

#6 0x000000000041d685 in ?? ()

#7 0x000000000041e89e in ?? ()

#8 0x00000000004218dc in yyparse ()

#9 0x000000000041b507 in parse_command ()

#10 0x000000000041b5c6 in read_command ()

#11 0x000000000041b74e in reader_loop ()

#12 0x000000000041b2aa in main ()

Problem F 程序跟蹤

time limit 1 sec memory limit 128 mb submit 45 solved 9 submit status web board linux程式除錯strace命令詳解 strace 命令是一種強大的工具,它能夠顯示所有由使用者空間程式發出的系統呼叫。strace 顯示...

Linux 從GDB談程序跟蹤

程序跟蹤的系統呼叫是ptrace 通過 ptrace 乙個程序可以動態的讀寫另乙個程序的記憶體和暫存器,包括資料段 段 堆疊以及所有的暫存器。從概念上來說,著似乎也是程序間通訊的一種方法。但實際上,這種通訊是單方面的,被跟蹤的程序並不知道自己是在收到控制和監視的條件下進行。從這個角度來說,這又不屬於...

程序核心棧 使用者棧

1.程序的堆疊 核心在建立程序的時候,在建立task struct的同事,會為程序建立相應的堆疊。每個程序會有兩個棧,乙個使用者棧,存在於使用者空間,乙個核心棧,存在於核心空間。當程序在使用者空間執行時,cpu堆疊指標暫存器裡面的內容是使用者堆疊位址,使用使用者棧 當程序在核心空間時,cpu堆疊指標...