pstack工具查看线程堆栈的方法

article/2025/10/5 16:54:20

作者:朱金灿
来源:clever101的专栏

为什么大多数人学不会人工智能编程?>>> hot3.png

  pstack是Linux下查看运行线程堆栈的工具,本质是一个shell脚本。 # 1.pstack工具的安装   很多时候pstack和gdb是一块安装的。但是在一些Linux系统中并没有自带pstack工具。要判断系统中有没有pstack工具也很简单,只需要在shell终端运行:pstack,如果没有则提示找不到命令。没有pstack工具的话可以在系统中新建,具体做法是新建一个shell脚本,代码如下:
#!/bin/shif test $# -ne 1; thenecho "Usage: `basename $0 .sh` <process-id>" 1>&2exit 1
fiif test ! -r /proc/$1; thenecho "Process $1 not found." 1>&2exit 1
fi# GDB doesn't allow "thread apply all bt" when the process isn't
# threaded; need to peek at the process to determine if that or the
# simpler "bt" should be used.backtrace="bt"
if test -d /proc/$1/task ; then# Newer kernel; has a task/ directory.if test `/bin/ls /proc/$1/task | /usr/bin/wc -l` -gt 1 2>/dev/null ; thenbacktrace="thread apply all bt"fi
elif test -f /proc/$1/maps ; then# Older kernel; go by it loading libpthread.if /bin/grep -e libpthread /proc/$1/maps > /dev/null 2>&1 ; thenbacktrace="thread apply all bt"fi
fiGDB=${GDB:-gdb}# Run GDB, strip out unwanted noise.
# --readnever is no longer used since .gdb_index is now in use.
$GDB --quiet -nx $GDBARGS /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'

2.pstack工具的使用

  如果系统直接装有pstack工具的,用法是pstack pid #pid为进程id
如果系统没有,将上面shell脚本生成一个pstack.sh,复制到/usr/bin目录下,然后
通过chmod 777 /usr/bin/pstack.sh #对pstack.sh授予运行权限,然后
sudo pstack.sh pid #运行pstack.sh需要管理员权限


http://chatgpt.dhexx.cn/article/hvxYZR4Z.shtml

相关文章

TCP 的 NACK 与 SACK

可靠传输&#xff0c;一旦丢包&#xff0c;必然 HoL blocking&#xff0c;NACK 和 SACK 必须二选一驱动重传&#xff1a; NACK&#xff1a;receiver 主动通告没有收到的报文&#xff0c;sender 收到后重传。 SACK&#xff1a;receiver 主动通告收到的报文&#xff0c;sender …

Linux常用命令——pstack命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) pstack 显示每个进程的栈跟踪 补充说明 pstack命令可显示每个进程的栈跟踪。pstack命令必须由相应进程的属主或root运行。可以使用pstack来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的PID。…

【Linux】程序卡死、失败位置|pstack和starce看进程调用|分析耗时函数

目录 即看即用 1,starce 2,pstack 查找进程卡死原因的工具 starce pstack 利用pstack 和 strace分析程序在哪里耗时&#xff1f; 即看即用 区别&#xff1a; 使用 pstack 获得的进程堆栈是程序的静态信息&#xff0c;而使用 strace 可以获得程序的动态信息&#xff0c…

详解命令-pstack

pstack命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。 实例 pstree以树结构显示进程 pstree -p work | grep ad sshd(22669)---bash(22670)---ad_preproc…

pstack/gstack

pstack是一个shell脚本&#xff0c;用于打印正在运行的进程的栈跟踪信息&#xff0c;它实际上是gstack的一个链接&#xff0c;而gstack本身是基于gdb封装的shell脚本.。此命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程…

linux命令-- pstack命令(跟踪进程栈)

pstack是一个shell脚本&#xff0c;用于打印正在运行的进程的栈跟踪信息&#xff0c;它实际上是gstack的一个链接&#xff0c;而gstack本身是基于gdb封装的shell脚本.。此命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程…

pstack使用和原理

前言:   最近小组在组织<<深入剖析Nginx>>的读书会, 里面作者提到了pstack这个工具. 之前写JAVA程序, 对jstack这个工具, 非常的喜欢, 觉得很有用. 于是想比较下pstack和jstack的异同.   和jstack一样, pstack亦能展现进程的线程堆栈快照, 非常方便验证和性能…

RDMA RC UC UD

RC:面向连接的可靠服务 UC:面向连接的不可靠服务 UD:面向数据报的不可靠服务 面向连接 vs 面向数据报 相同点&#xff1a;两者的通信均包括双方QP对的参与 不同点&#xff1a;面向连接的通信若有N个节点与之通信&#xff0c;本机需要N个QP对&#xff1b; 面向数据报的通信…

WiFi 芯片原厂、模组厂 一文看懂IOT WiFi选择

一&#xff1a;国内常用WiFi原厂 瑞昱 RTL8710、乐鑫 ESP8266、德州仪器 TI cc3200、紫光展锐RDA5981、新干线NL6621、联发科 MT7681、高通 QCA4004。 博通Broadcom Corporation 博通是Wi-Fi芯片一哥&#xff0c;作为领先的半导体厂商&#xff0c;博通在无线领域的优势有目共睹…

51单片机系列--AD/DA

介绍 AD&#xff08;Analog to Digital&#xff09;&#xff1a;模拟-数字转换&#xff0c;将模拟信号转换为计算机可操作的数字信号 DA&#xff08;Digital to Analog&#xff09;&#xff1a;数字-模拟转换&#xff0c;将计算机输出的数字信号转换为模拟信号 计算机系统是一…

RDA5981开发环境安装

满满的到处是坑~~ 一&#xff1a;Keil MDK 安装 1.安装KEIL MDK 5.24a版本以及破解。 2.添加环境变量&#xff1a;C:\Keil_v5\ARM\ARMCC\bin 二&#xff1a;GCC-ARM交叉编译安装 1.从 https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads 下载最新版本 win7…

8259A简介

文章目录 1中断简介1.1中断1.2禁止中断与中断屏蔽1.3中断嵌套1.4中断类型号和中断向量表 2,8259A简介2.1 8259A介绍2.2 8259A内部结构2.3 8259A引脚2.3.1 与CPU相连的引脚2.3.2 与外设相连的引脚 2.4 8259a可编程寄存器 1中断简介 1.1中断 定义&#xff1a;CPU暂停当前程序的…

RTL8201-RMII电路

本文分享一下RTL8201如何用作RMII电路&#xff0c;无需外部晶体&#xff0c;时钟由主芯片产生。 RTL8201是常用的百兆电流型PHY&#xff0c;支持端口自动翻转&#xff08;AUTO MDIX&#xff09;&#xff0c;如下框图 RMII相对MII来说&#xff0c;连接线更少&#xff0c;MII需要…

RDMA 、RoCE 、IB 、TCP、Ethernet

ROCE ROCE&#xff08;Remote Direct Memory Access over Converged Ethernet&#xff09;是一种网络技术&#xff0c;它结合了RDMA&#xff08;远程直接内存访问&#xff09;和以太网交换机的特性。ROCE允许主机之间通过以太网进行高效的直接内存访问&#xff0c;从而提供低延…

RTD2785T RTD2785R 2K eDP屏驱动芯片介绍

RTD2785T 支持VGA2HDMI2DP转eDP&LVDS 2K分辨率 支持按键菜单和Uart串口通信&#xff0c;用于工控MCU通过uart指令调节参数 文章转载&#xff1a; RTD2785T 2HDMI2DP转eDP&LVDS 2K方案设计-易显方案设计 (rtddisplay.com)

【RDMA】15. RDMA之RoCE Soft-RoCE

【RDMA】RDMA 学习资料总目录_bandaoyu的笔记-CSDN博客SavirRDMA 分享1. RDMA概述https://blog.csdn.net/bandaoyu/article/details/112859853https://zhuanlan.zhihu.com/p/1388747382. 比较基于Socket与RDMA的通信https://blog.csdn.net/bandaoyu/article/details/1128613993…

Uva509 RAID

我在这题卡了一天&#xff0c;心态有点小崩。不过最后AC的时候还是很开心的。 坑点&#xff1a;1.注意当两个及以上disc无法读取时&#xff0c;输入不合法。 2.当校验结果与预期ans不同时&#xff0c;输入不合法。 其它都为合法情况。 当合法时&#xff0c;校验块不能作为数据…

百度dueros人工智能-RDA5981(R01开发板)-学习心得-安装SDK(dueros的MbedOS系统)

R01开发板的代码及功能测试需要安装SDK才能正常测试,我们需要了解一点MbedOS系统的基本知识及R01开放板的硬件知识才能开始安装SDK的工作。 1.Mbed OS基础知识 Mbed OS是一个开放源码操作系统,专门用于为物联网(IoT)设备设计的ARM微控制器的平台:需要连接到互联网的低功率、…

百度dueros人工智能-RDA5981(R01开发板)-学习心得-入门及硬件连接

一.入门及硬件连接 自从2017年12月10号收到在深圳比特跳动技术有限公司的淘宝网上购买的百度dueros人工智能-R01开发板,当拆开快递包裹的时候,我本以为可以到手就玩,结果当场就懵了,配件如下图所示: 配件从左到右分别是MIC语音输入,天线,发声喇叭,R01开放板。看见这四…

从RDA5981A/B/C编译后map文件和datasheet分析内存分配情况

先查看RDA5981的datasheet, 如下图,RDA5981芯片内部有三个RAM区域, I_SRAM,D_SRAM,I_cache, 还可以外挂PSRAM, 内存映射图解释: 在编译目录BUILD\UNO_81C\GCC_ARM\找到*.map文件, 可以搜索到如下地址情况: .data 0x00100080 .bss 0x001017a8 .stack …