Skip to content

linux C++进程CPU占用100%排查

Published: at 07:42 AM | 2 min read

现象

使用top -c命令查看发现某个进程的CPU一直100%以上,第一反应就是查看日志,如果发现某一处频繁打印日志,那么恭喜你很容易就定位到问题所在了,如果查看日志发现没什么异常请继续往下看。

出现问题的线程

进程ID你应该已经知道了,下一步要找到出现问题的线程ID,假如进程ID是:19672

top -H -p 19672

找到CPU占用100%的线程ID,注意第一行是当前进程ID,通常在第二行,假如有问题的线程ID是:19989

使用gdb attach目标进程

gdb 进程名 19672

回车在(gdb)命令后面输入

(gdb) info threads

下面会列出所有线程ID,找到(LWP 19989),如果不在当前页可以按Enter键继续往下翻页,找到后注意第一行的编号,如下编号是7

7 Thread 0x7f8279fef700 (LWP 19989)

一直按Enter直到可以输入(gdb)命令,输入:

(gdb) thread 7
回车后
(gdb) bt

下面输出的信息应该对你有所帮助。

退出调试

(gdb) detach