pstree&gdb

pstree 查看进程的线程数

import threading                                                
import time                                                     
                                                                
def run(i):                                                     
    if i % 2 != 0:                                              
        time.sleep(10)                                          
        raise Exception("GG")                                   
    time.sleep(1000)                                            
                                                                
def main(count):                                                
    ts = []                                                     
    for i in range(count):                                      
        ts.append(threading.Thread(target=run, args=(i,)))      
    for t in ts:                                                
        t.setDaemon(True)                                       
        t.start()                                               
    time.sleep(2000)                                            
                                                                
import click                                                    
                                                                
@click.group()                                                  
def cli():                                                      
    pass                                                        
                                                                
@cli.command()                                                  
@click.option("--count", type=int)                              
def test(count):                                                
    main(count)                                                 

通过pstree 查看对应线程情况

pstree -p 31864
python3(31864)─┬─{python3}(31865)
               └─{python3}(31866)
pstree -p 31864
python3(31864)───{python3}(31865)

gdb 查看进程运行状态

gdb 
attach pid
info threads  查看所有线程
thread thread_id 选择线程调试
info stack 查看当前线程的栈信息
thread apply all bt 查看所有线程的栈信息

info stack

#0  0x00007f7226efba1d in __libc_recv (fd=3, buf=0x2bdbe00, len=8192, flags=0)
    at ../sysdeps/unix/sysv/linux/recv.c:28
#1  0x00000000005bb8f6 in ?? ()
#2  0x00000000005bdfe9 in ?? ()
#3  0x00000000005be2e4 in ?? ()
#4  0x00000000005be378 in ?? ()
#5  0x00000000005030d5 in ?? ()
#6  0x0000000000506859 in _PyEval_EvalFrameDefault ()
#7  0x0000000000501945 in _PyFunction_FastCallDict ()
#8  0x0000000000591461 in ?? ()
#9  0x00000000005a337c in _PyObject_FastCallDict ()
#10 0x00000000005a3a5e in PyObject_CallMethodObjArgs ()
#11 0x00000000004c2e07 in ?? ()
#12 0x00000000004c2f3b in ?? ()
#13 0x00000000005dc390 in ?? ()
#14 0x00000000005dc705 in ?? ()
#15 0x0000000000502d6f in ?? ()
#16 0x0000000000506859 in _PyEval_EvalFrameDefault ()
#17 0x0000000000502209 in ?? ()
#18 0x0000000000502f3d in ?? ()
#19 0x0000000000506859 in _PyEval_EvalFrameDefault ()
#20 0x0000000000502209 in ?? ()
#21 0x0000000000502f3d in ?? ()
#22 0x0000000000506859 in _PyEval_EvalFrameDefault ()
#23 0x0000000000502209 in ?? ()
#24 0x0000000000502f3d in ?? ()
### 回答1: Linux中的`pstree`命令可以以树形结构展示进程之间的关系。它可以展示当前系统中所有进程的父子关系,并且将它们以一种易于理解的方式呈现出来。 使用`pstree`命令时可以带上不同的选项,例如: - `-p`:显示进程ID - `-u`:显示进程所有者的用户名 - `-h`:高亮当前进程以及它的父进程 例如,我们可以使用以下命令查看当前系统中所有进程的父子关系: ``` pstree ``` 输出结果将会是树形结构的进程关系图。 ### 回答2: pstree是一个在Linux系统中使用的命令,用于显示当前系统中所有进程的层次结构树。它以树状的形式展示了进程的父子关系,使得用户能够更清晰地了解进程之间的关联。 当我们在终端中输入pstree命令时,系统会根据根进程(init进程)将进程分为不同的层级,每个层级下的进程都以树状图的形式展示。树的根表示init进程,而它的子进程则表示其直接子进程。略微深入一些,子进程的子进程将会在树形图中构造一个层次结构。 通过使用pstree,我们可以方便地查看特定进程的父子关系。在每个进程的名称旁边,通常会有一些附加信息,如进程ID(PID)和状态。这些信息通常用颜色区分以提高可视性。 此外,pstree还为我们提供了额外的选项,如-a,该选项可以显示进程的命令行参数;-s,该选项可以按照进程的进程组来排序。 总之,pstree是一个实用的工具,可以展示进程间的层次关系,为我们在Linux系统中进行系统管理和故障排查提供了便利。通过查看进程层级结构,我们可以更好地理解系统中进程的关联并更好地管理它们。 ### 回答3: pstree是一个Linux命令,它可以以树状结构显示当前系统中的进程。这个命令非常有用,特别是在需要查看进程之间的父子关系时。 要使用pstree命令,只需在终端中输入"pstree"即可。默认情况下,它会显示当前用户的所有进程,将它们按照父子关系组织成树状结构,并在屏幕上打印出来。 pstree的树状结构非常直观,以进程ID(PID)为节点,用箭头连接父进程和子进程。根据树的层级,可以清晰地了解进程之间的关系。通过此命令,可以快速了解系统中哪些进程彼此相关或直接相互依赖。 同时,pstree还会标识出各个进程的名称和状态。常见的进程状态有"R"表示运行中,"S"表示休眠中,"T"表示停止或暂停,"Z"表示僵尸进程等等。这些信息可以帮助我们更好地了解系统中进程的运行情况。 除了默认情况下显示全部进程,我们还可以通过一些选项来指定显示某个特定进程,或者只显示某个用户的进程等等。在实际使用时,根据需要选择对应的选项即可。 总之,pstree命令是一个非常有用的工具,可以方便地查看Linux系统中的进程,并了解它们之间的父子关系。对于系统管理员和开发人员来说,使用pstree可以更好地管理和调试进程,提高系统的稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值