linux如何查看进程调用栈,Linux如何查看进程栈信息示例

本文介绍了在Linux上如何查看进程调用栈和线程信息,以帮助调试程序。通过`pstree -apl`、`ps -Lf`和`pstack`命令,可以获取到进程结构、线程详情以及线程的详细调用栈。对于Java程序,可以使用`kill -3`命令查看栈信息。
摘要由CSDN通过智能技术生成

今天在Linux上调试程序程序的时候发现有时候程序会莫名其妙的hang住,于是就想能不能找到当时程序有那些线程,都在做什么。找了一下linux命令,还真可以满足我的需求。下面看一个小例子。

先准备一段程序,为了简单起见这里使用python来写,其中创建了两个线程来执行各自的任务。

import threading

import time

def test1():

while(True):

time.sleep(1)

print "test1"

def test2():

while(True):

time.sleep(1)

print "test2"

t1 = threading.Thread(target=test1, args=())

t2 = threading.Thread(target=test2, args=())

t1.start()

t2.start()

time.sleep(12345)

然后运行这个程序

$ python test.py

先使用 “pstree -apl ” 查看进程结构

$ pstree -apl 26855

python,26855 test.py

|-{python},26858

|-{python},26859

然后使用 “ps -Lf ” 查看线程信息

$ ps -Lf 26855

UID PID PPID LWP C NLWP STIME TTY STAT TIME CMD

jhadmin 26855 25902 26855 0 3 15:15 pts/5 Sl+ 0:00 python test.py

jhadmin 26855 25902 26858 0 3 15:15 pts/5 Sl+ 0:00 python test.py

jhadmin 26855 25902 26859 0 3 15:15 pts/5 Sl+ 0:00 python test.py

最后,可以使用 “pstack ” 查看线程的详细信息,如下:

$ pstack 26855

Thread 3 (

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值