我如何理解Sleep()失败的转储

时间:2015-04-02 18:14:42

标签: c++ debugging dump

好的,我很困惑,为什么这个调试会将这一行显示为失败。

调用堆栈

[External Code]
WorkLoop.cpp
[External Code]

WorkLoop.cpp中的代码

while(doneWithWork == FALSE)
{
    if (threadsStatusesGood() == FALSE) 
    {
       logErrorMessage("Tread failed");
       doneWithWork = TRUE;
    }
    if (doneWithWork ==FALSE)
    {
        while (timeSpanNotToCheckIfDoneWithWork())
        {
            if (SystemStatusGood() == TRUE)
            {
                if ((shouldDoStuff == FALSE) &&
                     WaitFoMoreWork() == OAS_FALSE))
                {
                    shouldDoStuff = TRUE;
                }
            }
            else
            {
                shouldDoStuff = FALSE;
            }

            Sleep(100);
=>      } // debug pointer on this line.
    }
}

2 个答案:

答案 0 :(得分:1)

好吧,你实际上没有澄清你的确切失败,但是我怀疑异步操作(后台线程)已经很快被执行了

Sleep(100);

被召唤,并引发了异常。如果您没有可调试的[External Code],则捕获的最小点将是您自己的代码。

答案 1 :(得分:1)

可能是你陷入另一个线程,而这个线程睡了吗?