方法一:
1.top指令查看各进程的cpu占用情况(top+1:可查看多核cpu情况):
在这里插入图片描述
2.对CPU使用率过高的进程的所有线程进行排序

ps H -e -o pid,tid,pcpu,cmd --sort=pcpu | grep MainWin

在这里插入图片描述
3.通过查看/proc中的信息来确定高CPU线程. 打印了4列,线程ID,线程名,用户时间和内核时间(排名未分先后)

awk '{print $1,$2,$14,$15}' /proc/689/task/*/stat

在这里插入图片描述
4.找出进程中线程情况
使用gdb attach nmsagent所在的进程,在gdb中使用 info threads显示所有线程

gdb attach 689
info threads

在这里插入图片描述

得到如下结果,可以发现699线程的编号是5

5.使用thread 切换线程,使用bt显示线程栈

thread 5
bt

得到如下线程栈
在这里插入图片描述
方法二:
ps + strace
获取进程线程状态:

ps -eL | grep 699

在这里插入图片描述
使用 strace -p 717 得到线程栈
在这里插入图片描述
显示所有进程:

ps -el

查看所有进程的cpu占用时间(cpu使用率过高)

ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu

在这里插入图片描述
可参考:
https://www.cnblogs.com/ghost240/p/3863774.html

Logo

更多推荐