CPU百分百问题的研究

在对代码进行测试的时候,发现进程占用了100%的单核CPU资源。并且发现在另一个环境,这个进程占用了50%的CPU资源,因为在这个环境中是2核的CPU。而此时这个进程还并没有处理任何的数据,也就是说会有一个线程就占用一个CPU核的资源。

对于这个问题研究的方法主要用到了两个工具:Process Explorer和Windbg。

使用Process Exporer查找占用CPU资源的线程

博主采用了一个4核的CPU作为测试环境,这样可以有额外的CPU资源来运行我们的工具。在Process Explorer中选中要检查的进程,右键选择属性,查看线程状态,发现线程2824占用了25%的CPU资源。
CPU百分百问题的研究_第1张图片

用Windbg查找线程调用栈

在Windbg中设置要Symbol,attach到进程,使用命令~*kv查看所有的线程,栈 并且找到2824 (0xb08)的线程, 查看其函数栈,找到占用CPU的函数。
CPU百分百问题的研究_第2张图片

这个时候查找相应函数的代码进行审查,一般来说都是死循环导致的,比较容易发现问题。

你可能感兴趣的:(Windows调试)