pstack 安装linux_Linux下pstack的实现

pstack 安装linux_Linux下pstack的实现Linux下有时候我们需要知道一个进程在做什么,比如说程序不正常的时候,他到底在干吗?最直接的方法就是打印出他所有线程的调用栈,这样我们从栈再配合程序代码就知道程序在干吗了。Linux下这个工具叫做pstack.使用方法是#pstackUsage:pstack当然这个被调查的程序需要有符号信息。比较雷人的是这个程序竟然是个shell脚本,核心实现是gdb的threadapplyal…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Linux下有时候我们需要知道一个进程在做什么,比如说程序不正常的时候,他到底在干吗?最直接的方法就是打印出他所有线程的调用栈,这样我们从栈再配合程序代码就知道程序在干吗了。

Linux下这个工具叫做pstack. 使用方法是

# pstack

Usage: pstack

当然这个被调查的程序需要有符号信息。 比较雷人的是 这个程序竟然是个shell脚本,核心实现是gdb的 thread apply all bt, 我们可以观摩下他的实现,这个我们做类似的程序提供了一个很好的思路:

[root@=i ~]# cat `which pstack`

#!/bin/sh

if test $# -ne 1; then

echo “Usage: `basename $0 .sh` ” 1>&2

exit 1

fi

if test ! -r /proc/$1; then

echo “Process $1 not found.” 1>&2

exit 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 ; then

backtrace=”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 ; then

backtrace=”thread apply all bt”

fi

fi

GDB=${GDB:-/usr/bin/gdb}

if $GDB -nx –quiet –batch –readnever > /dev/null 2>&1; then

readnever=–readnever

else

readnever=

fi

# Run GDB, strip out unwanted noise.

$GDB –quiet $readnever -nx /proc/$1/exe $1

$backtrace

EOF

/bin/sed -n \

-e ‘s/^(gdb) //’ \

-e ‘/^#/p’ \

-e ‘/^Thread/p’

祝大家玩的开心。pstack 安装linux_Linux下pstack的实现

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193829.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java初始化二维数组的三种方式

    java初始化二维数组的三种方式//第一种方式:inta[][]={{1,2,3},{4,5,6}};//第二种方式;int[][]ints=newint[4][2];ints[i][j]=__;//分别赋值//第三种方式:第二维的长度可以动态申请int[][]arr3=newint[5][];//五

    2022年5月26日
    39
  • VS2008安装失败_vs2015安装时发生严重错误

    VS2008安装失败_vs2015安装时发生严重错误因为前两天XML的作业时用VS2008做的,公司的电脑上没装,打算装一个,以前安装过N次VS2008,昨天在公司的电脑上安装提示如下错误:    当时以为是安装的同时打开了很多其他的应用程序导致的这个问题。今天在关闭其他程序的情况下重新安装,还是出错。    在百度上搜说是与office2007冲突,解决办法是卸载office2007再安装,但是我以前都是在安装

    2022年9月6日
    5
  • 海思Hi3798MV200机顶盒芯片处理器简介

    海思Hi3798MV200机顶盒芯片处理器简介Hi3798MV200是用于IPTV/OTT机顶盒市场的支持4KP60解码的全4K高性能SOC芯片。集成4核64位高性能CortexA53处理器和多核高性能2D/3D加速引擎;支持H.2654Kx2K@P6010bit超高清视频解码,高性能的H.265高清视频编码,HDR视频解码及显示,Dolby和DTS音频处理;内置USB2.0、USB3.0、SDIO3.0、PCIe2.0等丰富外设接口。…

    2022年6月26日
    402
  • vue的$attrs_vue获取list集合中的对象

    vue的$attrs_vue获取list集合中的对象​说明本文用示例介绍Vue的$attrs和$listener的用法官网API—Vue.js$attrs和$listeners介绍Vue2.4中,引入了attrs和listeners,新增了inheritAttrs选项。$attrs:包含了父作用域中没有被prop接收的所有属性(不包含class和style属性)。可以通过v-bind=”$attrs”直接将这些属性传入内部组件。$

    2022年8月31日
    5
  • KL散度、JS散度、Wasserstein距离[通俗易懂]

    KL散度、JS散度、Wasserstein距离[通俗易懂]1.KL散度KL散度又称为相对熵,信息散度,信息增益。KL散度是是两个概率分布P和Q差别的非对称性的度量。KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。定义如下:DKL(P//Q)=−∑x∈XP(x)log1P(x)+∑x∈XP(x)log1Q(x)DKL(…

    2022年4月19日
    114
  • Springboot 整合RabbitMq ,用心看完这一篇就够了

    Springboot 整合RabbitMq ,用心看完这一篇就够了该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,provider消息推送实例,consumer消息消费实例,Direct、Topic、Fanout的使用,消息回调、手动确认等。(但是关于rabbitMq的安装,就不介绍了)在安装完rabbitMq后,输入http://ip:15672/,是可以看到一个简单后台管理界面的。在这个界面里面我们可以做些什么?可以手动创建…

    2022年5月15日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号