pstack命令使用说明

pstack命令介绍

使用man查看pstack命令介绍:

NAME
       gstack - print a stack trace of a running process

SYNOPSIS
       gstack pid

DESCRIPTION
       gstack  attaches  to  the active process named by the pid on the command line, and prints out an execution stack trace.  If ELF
       symbols exist in the binary (usually the case unless you have run strip(1)), then symbolic addresses are printed as well.

       If the process is part of a thread group, then gstack will print out a stack trace for each of the threads in the group.

使用示例

常用的场景是当程序卡壳时,我们想看看卡在哪里,这时可用pstack pid查看,举个例子:

// test程序源代码test.cc
#include <unistd.h>

void func() {
  while(1) {
    sleep(1);
  }
}

int main () {
  func();
  return 0;
}

编译:g++ test.cc -o test,然后./test &运行。
之后我们使用pstack命令看下test程序在做啥:

[root@ /]# ps aux |grep test                   
root     17262  0.0  0.0  16340  1024 pts/14   S    20:18   0:00 ./test
root     17266  0.0  0.0 115776  1004 pts/14   R+   20:18   0:00 grep --color=auto test
[root@ /]# pstack 17262
#0  0x00007f9440a121a0 in __nanosleep_nocancel () from /lib64/libc.so.6
#1  0x00007f9440a12054 in sleep () from /lib64/libc.so.6
#2  0x00000000004005b5 in func() ()
#3  0x00000000004005c0 in main ()

可以看到程序运行到了sleep函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值