pstack

pstack

显示每个进程的栈跟踪

补充说明

pstack命令 可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID

命令软件包下载地址:https://packages.debian.org/sid/pstack

实例

pstree以树结构显示进程

pstree -p work | grep ad
sshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552)
                                                |-{ad_preprocess}(4553)
                                                |-{ad_preprocess}(4554)
                                                |-{ad_preprocess}(4555)
                                                |-{ad_preprocess}(4556)
                                                `-{ad_preprocess}(4557)

work为工作用户,-p为显示进程识别码,ad_preprocess共启动了6个子线程,加上主线程共7个线程。

ps -Lf 4551
UID        PID  PPID   LWP  C NLWP STIME TTY      stat   time CMD
work      4551 22670  4551  2    7 16:30 pts/2    Sl+    0:02 ./ad_preprocess
work      4551 22670  4552  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4553  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4554  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4555  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4556  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4557  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

进程共启动了7个线程

pstack显示每个进程的栈跟踪:

pstack 4551
Thread 7 (Thread 1084229984 (LWP 4552)):
#0  0x000000302afc63dc in epoll_wait () from /lib64/tls/libc.so.6
#1  0x00000000006f0730 in ub::EPollEx::poll ()
#2  0x00000000006f172a in ub::NetReactor::callback ()
#3  0x00000000006fbbbb in ub::UBTask::CALLBACK ()
#4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0
#5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6
#6  0x0000000000000000 in ?? ()
Thread 6 (Thread 1094719840 (LWP 4553)):
#0  0x000000302afc63dc in epoll_wait () from /lib64/tls/libc.so.6
#1  0x00000000006f0730 in ub::EPollEx::poll ()
#2  0x00000000006f172a in ub::NetReactor::callback ()
#3  0x00000000006fbbbb in ub::UBTask::CALLBACK ()
#4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0
#5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6
#6  0x0000000000000000 in ?? ()
Thread 5 (Thread 1105209696 (LWP 4554)):
#0  0x000000302b80baa5 in __nanosleep_nocancel ()
#1  0x000000000079e758 in comcm::ms_sleep ()
#2  0x00000000006c8581 in ub::UbClientManager::healthyCheck ()
#3  0x00000000006c8471 in ub::UbClientManager::start_healthy_check ()
#4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0
#5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6
#6  0x0000000000000000 in ?? ()
Thread 4 (Thread 1115699552 (LWP 4555)):
#0  0x000000302b80baa5 in __nanosleep_nocancel ()
#1  0x0000000000482b0e in armor::armor_check_thread ()
#2  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0
#3  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6
#4  0x0000000000000000 in ?? ()
Thread 3 (Thread 1126189408 (LWP 4556)):
#0  0x000000302af8f1a5 in __nanosleep_nocancel () from /lib64/tls/libc.so.6
#1  0x000000302af8f010 in sleep () from /lib64/tls/libc.so.6
#2  0x000000000044c972 in Business_config_manager::run ()
#3  0x0000000000457b83 in Thread::run_thread ()
#4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0
#5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6
#6  0x0000000000000000 in ?? ()
Thread 2 (Thread 1136679264 (LWP 4557)):
#0  0x000000302af8f1a5 in __nanosleep_nocancel () from /lib64/tls/libc.so.6
#1  0x000000302af8f010 in sleep () from /lib64/tls/libc.so.6
#2  0x00000000004524bb in Process_thread::sleep_period ()
#3  0x0000000000452641 in Process_thread::run ()
#4  0x0000000000457b83 in Thread::run_thread ()
#5  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0
#6  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6
#7  0x0000000000000000 in ?? ()
Thread 1 (Thread 182894129792 (LWP 4551)):
#0  0x000000302af8f1a5 in __nanosleep_nocancel () from /lib64/tls/libc.so.6
#1  0x000000302af8f010 in sleep () from /lib64/tls/libc.so.6
#2  0x0000000000420d79 in Ad_preprocess::run ()
#3  0x0000000000450ad0 in main ()

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/pstack/

(0)
AuroraAurora站点维系者
上一篇 2024年 3月 1日 下午4:39
下一篇 2024年 3月 1日 下午4:39

相关推荐

  • Helm | Helm 列表

    文章目录helm list简介可选项从父命令继承的命令请参阅 helm list 列举发布版本 简介 该命令会列举出指定命名空间的所有发布版本,(如果没有指定命名空间,会使用当前命…

    入门教程 2023年 12月 14日
  • yes

    文章目录yes补充说明语法参数实例 yes 重复打印指定字符串 补充说明 yes命令 在命令行中输出指定的字符串,直到yes进程被杀死。不带任何参数输入yes命令默认的字符串就是y…

    入门教程 2024年 3月 11日
  • lsattr

    文章目录lsattr补充说明语法选项参数实例 lsattr 查看文件的第二扩展文件系统属性 补充说明 lsattr命令 用于查看文件的第二扩展文件系统属性。 语法 lsattr(选…

    入门教程 2023年 12月 19日
  • apachectl

    文章目录apachectl补充说明语法参数 apachectl Apache服务器前端控制工具 补充说明 apachectl命令 是Apache的Web服务器前端控制工具,用以启动…

    入门教程 2023年 12月 6日
  • vgchange

    文章目录vgchange补充说明语法选项参数实例 vgchange 修改卷组属性 补充说明 vgchange命令 用于修改卷组的属性,经常被用来设置卷组是处于活动状态或非活动状态。…

    入门教程 2024年 3月 11日
  • nisdomainname

    文章目录nisdomainname补充说明语法选项 nisdomainname 显示主机NIS的域名 补充说明 nisdomainname命令 用于显示主机NIS的域名。 语法 n…

    入门教程 2024年 1月 10日
  • ltrace

    文章目录ltrace补充说明语法选项实例 ltrace 用来跟踪进程调用库函数的情况 补充说明 ltrace命令 是用来跟踪进程调用库函数的情况。 语法 ltrace [optio…

    入门教程 2023年 12月 19日
  • strace

    文章目录strace补充说明语法选项实例常用参数说明综合例子 strace 跟踪系统调用和信号 补充说明 strace命令 是一个集诊断、调试、统计与一体的工具,我们可以使用str…

    入门教程 2024年 3月 11日
  • free

    文章目录free补充说明语法选项实例 free 显示内存的使用情况 补充说明 free命令 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 语法 f…

    入门教程 2023年 12月 14日
  • mkfs

    文章目录mkfs补充说明语法选项参数实例 mkfs 用于在设备上创建Linux文件系统 补充说明 mkfs命令 用于在设备上(通常为硬盘)创建Linux文件系统。mkfs本身并不执…

    入门教程 2024年 1月 3日

发表回复

登录后才能评论
Translate »