日期:2014-05-16  浏览次数:20751 次

怎样调试CPU占用率100%的问题
我在嵌入式系统上开发,现在系统在运行某些操作后占用率100%,用top可以看到具体是哪个进程。但是该程序也很庞大,里面有诸多线程,而且重要的是这个程序并非由我们这边开发的,我们只是移植。我们有源代码,但是要想完全看明白代码再去推理哪里出问题,估计一时很难搞定。
在这种情况下,各位有什么好的调试方法可以帮助快速定位到错误的程序位置?
我尝试用oprofile统计各函数的占用时间,但oprofile显示了最后大量CPU时间是耗在一个libc库的一个函数中,而根据此函数倒推到底是哪个函数也相当麻烦,所以此法似乎难以实行。

------解决方案--------------------
程序出现死循环了?

pstack看下每一个线程的调用堆栈,看下在在哪发生死循环。
------解决方案--------------------
试试systemtap和strace之类的工具,应该可以倒推出是哪个函数调用的那个函数。