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