linux gstack pstack 进程运行堆栈查看工具
pstack的作用
1). 查看线程数(比pstree, 包含了详细的堆栈信息)
2). 能简单验证是否按照预定的调用顺序/调用栈执行
3). 采用高频率多次采样使用时, 能发现程序当前的阻塞在哪里, 以及性能消耗点在哪里?
4). 能反映出疑似的死锁现象(多个线程同时在wait lock, 具体需要进一步验证)
pstack的安装
pstack是gdb的一部分,如果系统没有pstack命令,使用yum搜索安装gdb即可
yum install gdb -y
pstack 与 gstack 区别
pstack是/usr/bin/gstack的软链接
使用实例
问题:php某进程一直卡着在running,找不到具体原因
执行 gstack 1696 效果如下:
可以看到运行堆栈信息已经打印出来,可根据信息排错
pstack原理
gstack本身是基于gdb封装的shell脚本.
让我们简单分析下这个强大的shell脚本:
由于代码太长, 这边选取最核心的片段, backtrace="thread apply all bt"
shell采用了here document的方式, 完成了GDB的交互工作(注意EOF标识, 及范围内的交互命令).
重要的是输入thread apply all bt这个交互命令. 该命令要求输出所有的线程堆栈信息.
对GDB输出的结果, 通过管道并借助sed命令进行了替换和过滤.
pstack其实是gdb的一个功能封装, 但其实现的功能, 确实非常实用
linux gstack pstack 进程运行堆栈查看工具相关推荐
- pstack 安装linux_linux下的进程堆栈查看工具pstack
pstack在linux上是一个非常有用的工具,可以查看进程内部调用函数的信息.可惜的是在ubuntu10.10版本中没有找到这个工具.无奈,只能下载尝试编译了. 首先安装编译环境,使用如下命令: a ...
- Linux 如何创建进程函数与查看进程
进程创建函数 进程就是pcb,意味着创建一个进程,就是创建一个pcb pid_t fork(void) –通过复制调用进程(父进程)创建一个新的进程(子进程) 创建一个新的pcb,然后从父进程pcb中 ...
- Linux下多线程堆栈查看工具(pstree、ps、pstack)
原文:http://blog.csdn.net/yfkiss/article/details/6729364 1. pstree pstree以树结构显示进程 $ pstree -p work | g ...
- linux 进程占用cpu查看工具,Linux下如何查看某一进程的CPU占用率
/proc下每个进程有一个目录,目录下的stat文件可以得到关于该进程的信息,比如: # cat /proc/2122/stat 2122 (sshd) S 6599 2122 2122 0 -1 8 ...
- linux常用查看进程,Linux常用的进程管理和查看指令
&背景工作做符 ctrl+z暂停 ctrl + c 停止 jobs [-l(list) , r(running jobs) ,-s(stop jobs)] 观察背景工作的状态 fg %j ...
- Linux 0.11进程运行轨迹的跟踪,进程运行轨迹的跟踪与统计
1,到内核init/main.c下修改信息:(cd/oslab/oslab/linux-0.11/init) 2,向kernel/printk.c中添加打印日志的功能 注意,是在源文件下增加代码: 3 ...
- linux上json文件格式化的查看工具jq
0.引用 reference1 1.下载 https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz 2.安装 tar ...
- Linux进制查看工具:od、hexdump、xxd
od 命令 :http://man.linuxde.net/od od 命令 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常使用od命令查看特殊格式的 ...
- Linux下排查进程占用cpu高的问题
相信很多C++程序员都经历程序占用cpu过高的问题,这种问题,如果对代码运行逻辑足够熟悉,只靠脑子想估计定位起来也不难,但是如果是调用第三方sdk,或者团队其他人开发的库导致的cpu占用居高,就不那么 ...
最新文章
- 建立计算机系学生视图,实验六 视图的操作.doc
- ListModel QML类型
- Introduction to the Optimizer --cbo
- navicat premium 连接出现的问题
- [导入].Net 中处理Word(2007)文档的一种方法
- linux下postgresql离线编译安装
- Synology DS213J 群晖NAS git server架设方法!
- [原创]使用 Google Chart 在线服务实现软件版本发布时间线图
- FFmpeg入门详解之74:FFmpeg转码器Java版之需求规格说明书
- Java多线程编程-(17)-多线程异步调用之Future模式
- 汽车电子之NFC技术
- PS线条神器插件Lazy Nezumi Pro(能画出sai般的线条)
- 怎么增加淘宝店铺标签权重
- nextpolish安装_使用nextpolish对三代组装进行polish
- 【STM32】HAL库-备份寄存器(BKP)
- HTML 笔记/案例
- 我的世界服务器无法发送聊天信息,我的世界聊天框指令传送 | 手游网游页游攻略大全...
- 数据仓库面试题-初级
- 信息系统项目管理师-项目范围管理
- B. Patchouli‘s Magical Talisman #796 div2
热门文章
- Linux内核移植之三:内核配置选项
- Keil编译Entry point (0x00100000) lies outside the image.错误
- 从源码带你看懂functools的partial方法
- 30天敏捷生活(9-11):调整30天的节奏
- 我脑中飘来飘去的css魔幻属性
- 有人买不?没人的话我待会儿再来问问 价值6.11亿美元的入侵工具无人问津
- [20170513]update结果集.txt
- Apache 启动提示undefined symbol: libiconv_open
- php-fpm 参数及配置详解
- Lungo transition in reverse direction. 反转效果