zoukankan      html  css  js  c++  java
  • 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 pthread_cond_wait@@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)原理:

    [root@localhost ~]# which gstack
    /usr/bin/gstack
    [root@localhost ~]# 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)应用:

      (1)使用pstack确定进程挂起的位置。

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

    不断学习中。。。

  • 相关阅读:
    谈谈php依赖注入和控制反转
    关于php 高并发解决的一点思路
    php常用的优化手段
    php判断多维数组的技巧
    浅谈echo、print、var_dump()、print_r()的区别
    MYSQL表记录字段换行符回车符处理
    mysqldumpslow的使用简介
    mysql性能优化配置总结
    关闭discuzX3.2注册页面的注册邮箱验证
    php变量布尔值验证
  • 原文地址:https://www.cnblogs.com/hanerfan/p/5208601.html
Copyright © 2011-2022 走看看