pstack使用入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pstack使用入门相关的知识,希望对你有一定的参考价值。

  1、pstack/gstack:print a stack trace of a running process

  1)用法:gstack pid。

  2)简介:gstack命令attach到指定pid的进程,并打印其执行堆栈跟踪(execution stack trace)。若是多线程进程,还可以分别打印出各线程的堆栈跟踪。如以下片断:

Thread 28 (Thread 0x7f771e50c700 (LWP 24360)):
#0  0x00000038cfa0b63c in [email protected]@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00000000004b3c08 in boost::asio::detail::task_io_service::run(boost::system::error_code&) ()
#2  0x0000000000534da3 in io_service_pool::runService(std::shared_ptr<boost::asio::io_service>) ()
... ...

  gstack打印的只是某一瞬间进程/线程的堆栈跟踪,但可以通过频繁采样(如每秒执行一次)获得足够的统计信息,并保存到文件中,再作分析。

  3)原理:

[[email protected] ~]# which gstack
/usr/bin/gstack
[[email protected] ~]# file /usr/bin/gstack
/usr/bin/gstack: POSIX shell script, ASCII text executable

  gstack实际上是shell脚本,它应用了gdb的thread apply all bt子命令。thread apply表示将一个命令(bt)应用到指定的一些线程(all)。

  4)应用:比如,同一程序的两个不同版本在运行时对CPU的使用有明显的不同,则可分别收集它们的统计信息,再作比较(如从#0入手),从中找出两者函数调用情况的不同之处等。

 

 

不断学习中。。。

以上是关于pstack使用入门的主要内容,如果未能解决你的问题,请参考以下文章

pstack

排查程序死循环,死锁的方法 ——pstack

pstack使用和原理

pstack 作为分析工具有多可靠?

LINUX 编程定位工具gstack,pstack

利用top命令和pstack排查linux进程CPU使用率过高的问题