vc6工程, 界面卡死, 但是cpu=0%, 工作线程确定有在工作, 感觉是主线程卡死,为什么呢?
各位大哥帮帮忙啊!

解决方案 »

  1.   

    主线程里写了什么?WaitForXXX?
      

  2.   

    就如同我最近犯的一个错误:主线程中domodal了一个窗口,这个窗口又对主界面的一个控件进行了ShowWindow操作,结果两个互相等,卡死了
      

  3.   

    那你看看你的OnPaint里面有没有什么异常的东西
      

  4.   

    OnPaint已经清楚所以代码,就剩下系统的代码了
      

  5.   

    主线程堆栈如下:
    NTDLL! 7c92e514()
    NTDLL! 7c921046()
    NTDLL! 7c937610()
    KERNEL32! 7c80ae7e()
    __delayLoadHelper(const ImgDelayDescr * 0x00000118, int (void)* * 0x5f5b3bac __imp__CoFreeUnusedLibraries@0) line 187 + 10 bytes
    MFCO42D! _tailMerge_ole32 + 10 bytes
    MFC42D! 5f435246()
    MFC42D! 5f43b596()
    MFC42D! 5f43c0da()
    MFC42D! 5f43b238()
    MFC42D! 5f43bf04()
    MFC42D! 5f435a3e()
    WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x001423ad, int 0x00000001) line 30
    WinMainCRTStartup() line 330 + 54 bytes
    KERNEL32! 7c817077()
      

  6.   

    运行程序,程序死的时候再中断,然后看主线程断在哪里,那断的那个地方肯定是有问题的!第二个,堆栈信息可能不完全,看到的就是你上面的堆栈,全是window内核的!可以把microsoft的pdb下载下来,主要的ntdll.pdb,user32.pdb,kernel32.pdb!对于堆栈信息不完全的,加载这几个pdb一般都会有惊喜的...
      

  7.   

    vc6工程, 界面卡死, 但是cpu=0%, 工作线程确定有在工作, 感觉是主线程卡死,为什么呢?
    各位大哥帮帮忙啊!

    先确定下在操作那一步时出现界面卡死的,
    一步步确定问题出错点,比如先注释掉线程...等
      

  8.   

    一般的话程序跑一段时间后才出现的,不定时,难找原因,有时候用其他窗口覆盖一部分程序窗口,刷新一下界面也会
    卡死, 但不是每次都会, 界面刷新部分OnPaint等没删除掉代码了,只调用系统的,也会出错. 会不会是线程堆被破坏了,影响到主线程??
      

  9.   


    if (程序是否包含调试信息) {
       用VC打开该程序的工程,菜单[Debug]->[Attach...]->选中程序进程,
       VC Attach 到程序以后, [Debug]->[Break],
       [Debug]->[Thread...], 选中主线程,双击,查看调用栈,-> 问题找到.
    }
    else {
       网上下载 ProcXP.exe, 运行, 双击选择程序进程, 找到 Thread 分页, 双击选择主线程,查看调用栈,(可能会有线索).
    }结论 调试信息 很重要.
      

  10.   

    可能性很多,常见的GUI Thread死锁,你可以debug一下,看看在哪里卡住了。
    我之前遇到过很多次这种问题,可以尝试发消息给窗口,看看是否有响应?