返回顶部
首页 > 资讯 > 操作系统 >Linux如何查看进程栈信息示例
  • 423
分享到

Linux如何查看进程栈信息示例

linux查看进程堆栈linux查看进程调用栈linux查看进程栈 2022-06-04 22:06:12 423人浏览 八月长安
摘要

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

今天在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 (Thread 0x7f8a344f2700 (LWP 26858)):
#0 0x00007f8a3b5387a3 in select () from /lib64/libc.so.6
#1 0x00007f8a344f5070 in time_sleep () from /usr/lib64/python2.7/lib-dynload/timemodule.so
#2 0x00007f8a3c215af0 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#3 0x00007f8a3c217e3D in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#4 0x00007f8a3c1a188d in function_call () from /lib64/libpython2.7.so.1.0
#5 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#6 0x00007f8a3c2104fd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#7 0x00007f8a3c2154bd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#8 0x00007f8a3c2154bd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#9 0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#10 0x00007f8a3c1a1798 in function_call () from /lib64/libpython2.7.so.1.0
#11 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#12 0x00007f8a3c18b8d5 in instancemethod_call () from /lib64/libpython2.7.so.1.0
#13 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#14 0x00007f8a3c20e6f7 in PyEval_CallObjectWithKeyWords () from /lib64/libpython2.7.so.1.0
#15 0x00007f8a3c2465c2 in t_bootstrap () from /lib64/libpython2.7.so.1.0
#16 0x00007f8a3bf1ce25 in start_thread () from /lib64/libpthread.so.0
#17 0x00007f8a3b54134d in clone () from /lib64/libc.so.6
Thread 2 (Thread 0x7f8a33cf1700 (LWP 26859)):
#0 0x00007f8a3b5387a3 in select () from /lib64/libc.so.6
#1 0x00007f8a344f5070 in time_sleep () from /usr/lib64/python2.7/lib-dynload/timemodule.so
#2 0x00007f8a3c215af0 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#3 0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#4 0x00007f8a3c1a188d in function_call () from /lib64/libpython2.7.so.1.0                                              
#5 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0                                              
#6 0x00007f8a3c2104fd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0                                           
#7 0x00007f8a3c2154bd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0                                           
#8 0x00007f8a3c2154bd in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0                                           
#9 0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#10 0x00007f8a3c1a1798 in function_call () from /lib64/libpython2.7.so.1.0
#11 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#12 0x00007f8a3c18b8d5 in instancemethod_call () from /lib64/libpython2.7.so.1.0
#13 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#14 0x00007f8a3c20e6f7 in PyEval_CallObjectWithKeywords () from /lib64/libpython2.7.so.1.0
#15 0x00007f8a3c2465c2 in t_bootstrap () from /lib64/libpython2.7.so.1.0
#16 0x00007f8a3bf1ce25 in start_thread () from /lib64/libpthread.so.0
#17 0x00007f8a3b54134d in clone () from /lib64/libc.so.6
Thread 1 (Thread 0x7f8a3c6f3740 (LWP 26855)):
#0 0x00007f8a3bf22a0b in do_futex_wait.constprop.1 () from /lib64/libpthread.so.0
#1 0x00007f8a3bf22a9f in __new_sem_wait_slow.constprop.0 () from /lib64/libpthread.so.0
#2 0x00007f8a3bf22b3b in sem_wait@@GLIBC_2.2.5 () from /lib64/libpthread.so.0
#3 0x00007f8a3c242535 in PyThread_acquire_lock () from /lib64/libpython2.7.so.1.0
#4 0x00007f8a3c2461c2 in lock_PyThread_acquire_lock () from /lib64/libpython2.7.so.1.0
#5 0x00007f8a3c215af0 in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#6 0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#7 0x00007f8a3c21533c in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#8 0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#9 0x00007f8a3c21533c in PyEval_EvalFrameEx () from /lib64/libpython2.7.so.1.0
#10 0x00007f8a3c217e3d in PyEval_EvalCodeEx () from /lib64/libpython2.7.so.1.0
#11 0x00007f8a3c1a1798 in function_call () from /lib64/libpython2.7.so.1.0
#12 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#13 0x00007f8a3c18b8d5 in instancemethod_call () from /lib64/libpython2.7.so.1.0
#14 0x00007f8a3c17c8e3 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#15 0x00007f8a3c17c9c5 in call_function_tail () from /lib64/libpython2.7.so.1.0
#16 0x00007f8a3c17ccfb in PyObject_CallMethod () from /lib64/libpython2.7.so.1.0
#17 0x00007f8a3c232f29 in Py_Finalize () from /lib64/libpython2.7.so.1.0
#18 0x00007f8a3c244325 in Py_Main () from /lib64/libpython2.7.so.1.0
#19 0x00007f8a3b46ac05 in __libc_start_main () from /lib64/libc.so.6
#20 0x000000000040071e in _start (dyIYsLYQV)

这里多说一句,如果要看java程序的栈信息,可以使用 “kill -3 ” 来查看,比如:


$ nohub java Test > test.out &
$ kill -3 <pid>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

--结束END--

本文标题: Linux如何查看进程栈信息示例

本文链接: https://lsjlt.com/news/19423.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux如何查看进程栈信息示例
    今天在linux上调试程序程序的时候发现有时候程序会莫名其妙的hang住,于是就想能不能找到当时程序有那些线程,都在做什么。找了一下linux命令,还真可以满足我的需求。下面看一个小例子。 先准备一段程序,为了简单起见这...
    99+
    2022-06-04
    linux 查看进程堆栈 linux 查看进程调用栈 linux 查看进程栈
  • Linux如何查看进程堆栈
    在Linux中,可以使用以下命令来查看进程的堆栈:1. 使用`ps`命令结合`-e`选项查看所有进程的PID:```ps -e```...
    99+
    2023-08-23
    Linux
  • java堆栈信息如何查看
    在Java程序中,可以通过以下方法查看堆栈信息:1. 使用`Thread.currentThread().getStackTrace...
    99+
    2023-09-07
    java
  • eclipse如何查看堆栈信息
    在Eclipse中查看堆栈信息可以使用以下步骤:1. 在Eclipse中打开您的项目。2. 找到并打开包含堆栈信息的Java类文件。...
    99+
    2023-08-23
    eclipse
  • Linux查看进程的所有信息的方法示例
    服务器上有一个任务进程,当我们使用ps -ef | grep task查看时,只能得到一些最基本的信息,假如我们需要知道对应的文件路径、启动命令的完整路径,就无从下手了。 今天教大家一个方法来查看进程的所有信息,包括启动...
    99+
    2022-06-04
    Linux查看进程信息 linux查看所有进程 linux查看进程命令
  • java异常堆栈信息如何查看
    要查看Java异常堆栈信息,可以使用以下方法:1. 在控制台直接打印异常堆栈信息:```javatry {// 代码块} catch...
    99+
    2023-10-10
    java
  • 如何在Netdata中查看进程信息
    要在Netdata中查看进程信息,您可以按照以下步骤操作: 打开Netdata的Web界面,通常在 http://localho...
    99+
    2024-04-02
  • linux如何查看cpu信息
    linux查看cpu信息的方法:1、打开终端;2、通过查看“/proc/cpuinfo”文件输入相关命令查看cpu信息即可。具体操作步骤:使用快捷键【Ctrl+Alt+T】打开终端命令行模式。输入以下命令查看cpu信息即可。cat /pro...
    99+
    2024-04-02
  • linux怎么查看进程输出信息
    在Linux中,可以使用以下命令来查看进程的输出信息: `ps`命令:可以使用`ps`命令来列出当前正在运行的进程。可以通过使用...
    99+
    2023-10-25
    linux
  • Linux如何使用命令查看进程状态信息
    这篇文章主要讲解了“Linux如何使用命令查看进程状态信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux如何使用命令查看进程状态信息”吧! 1. 前言本文主要介绍如何使用...
    99+
    2023-06-16
  • go线程堆栈信息怎么查看
    在Go语言中,可以通过调用`runtime.Stack`函数来获取当前Goroutine的堆栈信息。具体的使用方法如下:```gop...
    99+
    2023-09-27
    go
  • Linux怎么查看进程堆栈
    要查看Linux上进程的堆栈信息,您可以使用以下命令:1. 首先,打开终端或命令行界面。2. 使用 `ps` 命令查找要查看的进程的...
    99+
    2023-08-30
    linux
  • linux如何查看显卡信息
    linux查看显卡信息的方法:1、打开终端;2、输入“lspci -vnn | grep VGA -A 12”或者“lshw -C display”命令查看显卡信息即可。具体操作步骤:使用快捷键【Ctrl+Alt+T】打开终端命令行模式。输...
    99+
    2024-04-02
  • linux如何查看网卡信息
    在Linux系统中,可以使用多种命令来查看网卡信息。1. ifconfig命令:ifconfig命令可以显示当前系统中的所有网络接口...
    99+
    2023-09-09
    linux
  • linux如何查看系统信息
    目录一:cpu二:内存三:查看CPU位数(32 or 64)四:查看linux版本五:查看内核版本六:查看时区七:主机名查看主机名修改主机名八:查看selinux情况九:网络IP网关dns修改Host文件十:已经安装的软...
    99+
    2023-03-02
    linux查看系统信息 linux查看系统配置 linux查看机器配置命令
  • linux如何查看版本信息
    今天小编给大家分享一下linux如何查看版本信息的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-01-05
    linux
  • linux如何查看磁盘信息
    要查看Linux系统中的磁盘信息,可以使用以下命令: 使用 df 命令来查看已挂载磁盘的使用情况、剩余空间等信息: df -h ...
    99+
    2024-04-02
  • linux查看进程的示例方法
    这篇“linux查看进程的示例方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“linux查看进程的示例方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们...
    99+
    2023-06-06
  • Linux下如何查看硬件信息
    这篇文章主要介绍“Linux下如何查看硬件信息”,在日常操作中,相信很多人在Linux下如何查看硬件信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下如何查看硬件信息”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-16
  • 如何查看Linux的版本信息
    如何查看Linux的版本信息,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 简介Linux有很多发行版本,一般通过内核就可以判断大致的发行版本。但是如果需要详细的...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作