pstack命令可显示每个进程的栈跟踪,pstack $pid即可,pstack命令须由$pid进程的属主或者root运行。

这次出现cpu占比100%的情况,但看memory占比,并无异常,怀疑是某个地方死循环了。经同事提醒,用pstack命令查看相关进程,通过运行多次pstack,发现代码栈总是停在同一个位置。具体看代码,发现就是这个地方写错了。

这真的是个很强大的命令!和strace命令一样强大

下面是有七个线程的进程的代码栈打印情况

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 ()

内容来源于网络如有侵权请私信删除

linux 进程死循环,排查程序死循环,死锁的方法 ——pstack相关推荐

  1. pidstat命令(pidstat一键脚本、linux进程异常排查和性能分析)

    pidstat简单说明 pidstat为运维超热门使用工具,比ps命令有更丰富的输出十分方便运维/技术人员对linux系统进行排查. 比如找出具有cpu.ram特征的异常进程(如挖矿木马.死循环疯狂读 ...

  2. linux 运行选择哪个cpu核,判断Linux进程在哪个CPU核运行的方法

    问题:有一个Linux进程运行在多核处理器系统上,如何查看该进程运行在哪个CPU上? 方法一: ps 命令可以告诉你每个进程/线程目前分配到的(在"PSR"列)CPU ID. ps ...

  3. Linux进程崩溃排查方法

    dmesg 通过该指令可以查看进程崩溃的相关信息 上图中最后两条即为进程崩溃的日志(该程序执行过两次),通过日志可以看出是在调用libfun.so时出错,在日志中给出了进程崩溃的地址,可以通过addr ...

  4. Linux进程概念4 程序地址空间

    一. 程序地址空间 此时我们的研究是在kernel 2.6.32和32位平台进行说明 1. 程序地址空间图 我们在学习C/C++时候,应该学习过内存布局,以及了解各种变量的存储位置,例如局部变量存储在 ...

  5. LINUX进程内存占用情况如何查看的方法

    在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...

  6. Linux进程在后台运行的几种方法

    目录 nohup / setsid / & disown screen 总结 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, ...

  7. (大集合)Linux进程和线程的基本编程、通讯和例程【杂记】

    Linux 进程 和 线程 的基本 编程.通讯 和 例程 注:[杂记]系列为日常网搜资料的堆砌而积累成之.如有错误恭谢指出.标识为"原创"其实不完全是,只是多引用再整理和加上自己的 ...

  8. Linux进程编程基础介绍

    Linux系统是一个多进程的系统,它的进程之间具有并行性.互不干扰等特点.也就是说,每个进程都是一个独立的运行单位,拥有各自的权利和责任.其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发 ...

  9. linux进程的高级管理,Linux高级程序设计(第2版) PDF扫描版[94MB]

    Linux高级程序设计(第2版)以Linux操作系统(内核为2.6版本)为开发平台.GCC 4.0/GDB 6.3为开发调试环境,详细介绍了Linux系统下编程环境及编程工具.文件管理(文件类型.AN ...

  10. linux 进程可以把自己,如何将Linux进程小隐于用户?仅仅一行代码即可

    总有朋友问隐藏Linux进程的方法,我说你想隐藏到什么程度,是大隐于内核,还是小隐于用户.网上通篇论述的无外乎 hook 掉 procfs 或者类似的用户态方案,也都难免长篇大论,我说,这些场面都太大 ...

最新文章

  1. 电脑安全注意事项_别墅装修设计注意事项 别墅装修的陷阱有哪些
  2. 【链接】调查显示:超20%美国大学生曾花学生贷款投
  3. 5大过程组与整体管理
  4. Android 闹钟
  5. 信息学奥赛一本通(1042:奇偶ASCII值判断)
  6. Zbrush风格化角色大神!带你感受别致性感美学!
  7. VMware中网络设置之host-only
  8. 华为2017.7.26机试
  9. mysql 正则 换行符_MySQL 正则表达式
  10. c#类 对象 构造函数 析构函数——面向对象
  11. 拓端tecdat|R语言数据可视化分析案例:探索BRFSS数据
  12. 史上最全高级Java教程总结版(强烈建议收藏)
  13. Android MVP架构简析
  14. HyperLogLog算法及原理
  15. 重回童年的经典系列 |《保卫萝卜》来了,你还记得它吗?复刻 源码+解析 @怀旧的你
  16. win7变成xp风格了怎么改回_win7
  17. Linux下使用wget安装JDK
  18. nginx的安装部署
  19. 【pycharm激活方式】pycharm2022.1.1最新专业版安装和激活
  20. 三维家可以导入别人的方案吗_怎么把su模型导入三维家

热门文章

  1. vue项目引用QRCode生成二维码扫码实现app登录
  2. mysql mysql.sock连接_【MySQL】mysql.sock文件作用
  3. Excel如何合并相同项单元格
  4. CISSP考点拾遗——关于道德
  5. G码云+hexo搭建博客
  6. macbook linux 双系统,mac上安装ubuntu双系统教程
  7. linux配置cookie认证,Nginx配置修改网页cookie属性
  8. 串口抓包/截断工具的安装及使用详解
  9. JS调用google DEMO朗读
  10. 计算机wps函数的使用,WPS表格中IF函数使用的技巧