删除文章

确定要删除这篇文章吗?

取消
确定

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

     阅读(233)  2019-09-04 15:42:29

现象

使用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

文章评论

Keep it simple,stupid
文章数
306
总访问量
539269
今日访问
1009
最近评论

tujiaw : registerThreadInactive:如果当前没有激活的线程,就去激活线程,让等待的线程去执行任务。
hgzzx : 佩服佩服。 请教:registerThreadInactive的作用是什么?
xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
回到顶部