1、命令简介
pstack:打印正在运行的进程的堆栈跟踪。
2、命令语法
pstack pid
3、命令描述
pstack 命令是一个常用的工具,用于输出每个进程的栈跟踪。这个命令可以帮助开发者和系统管理员了解程序在特定时刻的调用堆栈信息,这对于调试和分析程序的行为非常有用。pstack 会附加到命令行上由 pid 指定的活动进程,并打印出执行堆栈跟踪。如果二进制文件中存在 ELF 符号(通常情况下都存在,除非你运行了 strip(1) 命令),那么符号地址也会被一同打印出来。如果该进程是线程组的一部分,那么 pstack 将为组中的每个线程打印出一个堆栈跟踪。
4、命令选项
| 选项 | 描述 | 
| -d | 设置定间隔符(默认为tab) | 
| -s | 使用串列处理,而非平行处理 | 
| --help | 显示帮助信息 | 
| --version | 显示版本信息 | 
5、使用示例
1)打印单个进程的栈跟踪
pstack [pid]
将 [pid] 替换为你想要查看栈跟踪的进程ID。
2)打印多个进程的栈跟踪
pstack [pid1] [pid2] [pid3]
将 [pid1] [pid2] [pid3] 分别替换为你想要查看栈跟踪的进程ID。
3)将栈跟踪输出到文件
pstack [pid] > stack_trace.txt
将 [pid] 替换为进程ID,stack_trace.txt 是输出文件的名称。
4)结合使用grep搜索特定函数的栈跟踪
pstack [pid] | grep 'function_name'
将 [pid] 替换为进程ID,'function_name' 替换为你想搜索的函数名。
5)在脚本中使用pstack来监控进程堆栈:
#!/bin/bash
while true; do
    pstack [pid] >> continuous_trace.txt
    sleep 1
done将 [pid] 替换为进程ID,continuous_trace.txt 是连续记录输出的文件,每秒更新一次。