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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 解决Ubuntu18.04版本高分辨率下导致字体过小问题

    解决Ubuntu18.04版本高分辨率下导致字体过小问题我所使用的是小米笔记本,显示屏是3.2K的分辨率。由于分辨率太高了,然后在ubuntu18.04的版本下显示的字体很小,小到都看不清了那种。于是查找了调整18.04版本字体大小的方法如下:安装gnome-tweaks工具sudoapt-getinstallgnome-tweaks安装完之后,直接在终端输入gnome-tweaks即可运行该工具。然后调整缩放比例,因为我的电脑分辨率是3.2K,所以我调整的缩放比例是2倍刚刚好,如下图:调整完之后,直接关闭该工具。再次回到ubunt

    2022年7月21日
    27
  • 怎样判断服务器的端口是否打开

    怎样判断服务器的端口是否打开

    2021年9月23日
    77
  • 细说php读书笔记_细说php自测题

    细说php读书笔记_细说php自测题今天我们来读这本书是兄弟连出版社出版的《细说PHP》,买它的原因是,我的PHP是跟着网上视频自学的。后来第一份工作是使用早些年流行的PHPCMS开发。phpcms并不是一款产品,它是一系列产品,当时市场对于cms这个概念其实不是太严谨,因为除了phpcms、dedecms、连discuz、ecshop也都被归类进去了。哦,还有帝国cms,它出品的火车头采集器当时可以说相当好用,后来因为工作需求,就自己写采集器了。正式因为这些cms系统的出现,再加上php语言本身易学易入门的特…

    2025年6月25日
    0
  • Android toArray

    Android toArrayArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[]a);对于第一个重载方法,是将list直接转为Object[]数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。不明真像的同学喜欢用第

    2022年5月15日
    29
  • Java IO流自动关闭

    Java IO流自动关闭Filef=newFile();Filedes=newFile();try(FileInputStreaminput=newFileInputStream(f);FileOutputStreamout=newFileOutputStream(des);){}catch(FileNotFoundExceptione1){ }catch(IO…

    2022年5月27日
    31
  • Android最全UI库合集

    Android最全UI库合集AndroidUILibrary目录索引抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新ViewPager图表(Chart)菜单(Menu)浮动菜单对话框空白页滑动删除手势操作RecyclerViewCard…

    2022年5月2日
    67

发表回复

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

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