mysql pstack进程号_pstack.sh 查看进程堆栈

该博客介绍了如何使用bash脚本和GDB来检查指定进程是否存在,并获取其堆栈回溯信息。如果进程有多个线程,脚本将决定是否应用`threadapplyallbt`以获取所有线程的回溯。此外,它还会检查进程是否链接到libpthread,以确定是否可能有多个线程。此技术对于调试多线程应用程序非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash

if (( $# < 1 ))

then

echo "usage: `basename $0` pid" 1>&2

exit 1

fi

if [[ ! -r /proc/$1 ]]

then

echo "Process $1 not found." 1>&2

exit 1

fi

backtrace="bt"

if [[ -d /proc/$1/task ]]

then

if [[ `ls /proc/$1/task 2>/dev/null | wc -l` > 1 ]]

then

backtrace="thread apply all bt"

fi  ;

elif [[ -f /proc/$1/maps ]]

then

if grep -e libpthread /proc/$1/maps > /dev/null 2>&1

then

backtrace="thread apply all bt"

fi

fi

GDB=gdb

$GDB -quiet -nx /proc/$1/exe -p $1 <<

sed -n  \

-e 's/^(gdb) //' \

-e '/^#/p' \

-e '/^Thread/p'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值