我的程序之前一直运行很好,没有问题。最近因项目需要跟外部程序结合,调用一个动态库进行网络连接。程序运行一两天以后,CPU占用率就可能会达到100%,这个动态库是别家公司提供,我怀疑是这个动态库的问题,但是又没有证据证明。请问,我怎么才能判断出是不是这个动态库占用CPU100%的呢?

解决方案 »

  1.   

    使用taskinfo或procexp等软件,查看程序的使用情况。
    注意,首先要获得dll中的线程号,根据此线程号判断
      

  2.   

    precexp或taskinfo这类的软件,能看到调用的动态库,但是看不到这个动态库占用CPU的情况,我已经试过了,行不通。
      

  3.   

    那请问怎么获得这个dll的线程号?
      

  4.   

    CUP占用只能是指 进程,线程
    不能说是某个模块楼主说的这个问题可以在调用该dll的函数时进行计时1 = GetTickCount
    CallFun
    2 = GetTickCount
    Log(2-1)
      

  5.   

    楼上的,这个方法行不通的,代码执行时间长短跟CPU占用率没多大关系,假设你的代码是在线程中执行,假设CallFun里面是一个循环,加了Sleep执行时间长,CPU占用率反而能降下来。如果是调用了WaitForXXXObject,执行时间可能更长,但可能CPU占用率接近0。
      

  6.   

    LZ你可以这样试:程序加个按钮或开关可以允许/禁止调用DLL的代码,发现CPU占用率达100%的时候关闭DLL的执行代码,看占用率是否能降下来,就可以确定是哪方面的问题了。