进程CPU 100%卡在那里没反应了,这时候没有coredump的文件分析,但可以通过强大的gdb调试。
下面写了一个简单的CPU 100%的死循环测试程序(t.c):
编译运行,发现程序迟迟没有执行结束:
使用top命令查看了一下,./a.out的可执行程序已经CPU 100%了:
这个时候用gdb attach +进程PID,登录CPU 100%的进程,查看当前它调用的堆栈,正在执行什么操作,例如调试a.out:
像这个程序比较简单,一下子就定位到第16行的死循环。复杂的可以跟踪堆栈信息。退出进程登录使用detach命令。另外还有strace工具可以调试CPU 100%的问题,暂不在本文介绍。

当进程出现CPU 100%的情况且无coredump时,可以借助gdb进行调试。通过编写CPU 100%的测试程序并使用gdb attach到进程PID,查看堆栈信息,从而定位问题。在示例中,简单的测试程序快速定位到了死循环的代码行。复杂情况则需要进一步跟踪堆栈。此外,还可以使用strace工具辅助调试。
最低0.47元/天 解锁文章
147

被折叠的 条评论
为什么被折叠?



