procstack 命令

用途

显示进程中的所有线程的十六进制地址和符号名称。

语法

procstack [ -F ] [ -g ] ProcessID ...

描述

/proc 文件系统提供控制进程的机制。 还提供了针对进程和线程当前状态信息的访问权,但是采用二进制格式。 proctools 命令提供基于一些可用信息的 ASCII 报告。

许多命令将进程标识的列表或者 /proc/ ProcessID 字符串作为输入。 shell 扩展 /proc/* 因此可用于指定系统中的所有进程。

每个 proctools 命令从 /proc 收集指定进程的信息,并将其显示给用户。 proctools 命令(例如,procrunprocstop)使用 /proc 接口来启动和停止进程。

命令从 /proc 中收集的信息是当前进程状态的快照,因此可能在任何时刻都不相同,除了已停止的进程之外。

procstack 命令显示进程中的所有线程的十六进制地址和符号名称。

标志

描述
-F 强制 procstack 命令控制目标进程,即使另一个进程在控制也是如此。
-g 阻止将符号名称转换为人们可阅读的名称。
ProcessID 指定进程标识。

示例

  1. 要显示进程 11928 的当前堆栈,请输入:
    procstack 11928
    此命令的输出类似如下:
    11928 : -sh                                    
    d01d15c4  waitpid   (?, ?, ?) + e0             
    10007a1c  job_wait   (?) + 144                 
    10020298  xec_switch   (?, ?, ?, ?, ?) + 9c0   
    10021db4  sh_exec   (?, ?, ?) + 304            
    10001370  exfile   () + 628                    
    10000300  main   (?, ?) + a1c                  
    10000100  __start   () + 8c
  2. 要为应用程序 appl 显示多个线程进程 28243 的所有线程的当前堆栈,请输入:
    procstack 28243
    
    该命令的输出类似如下:
    28243 : appl
    ---------- tid# 54321 -----------        
    d0059eb4  _p_nsleep   (?, ?) + 10
    d01f1fc8  nsleep   (?, ?) + b4
    d026a6c0  sleep   (?) + 34
    100003a8  main   () + 98
    10000128  __start   () + 8c
    ---------- tid# 43523 ----------
    d0059eb4  _p_nsleep   (?, ?) + 10
    d01f1fc8  nsleep   (?, ?) + b4
    d026a6c0  sleep   (?) + 34
    10000480  PrintHello   (d) + 30
    d004b314  _pthread_body   (?) + ec
    ---------- tid# 36352 ----------
    d0059eb4  _p_nsleep   (?, ?) + 10
    d01f1fc8  nsleep   (?, ?) + b4
    d026a6c0  sleep   (?) + 34
    10000480  PrintHello   (c) + 30
    d004b314  _pthread_body   (?) + ec
    

文件

描述
/proc 包含 /proc 文件系统。