c++程序退出,代码0错误

C++ program exited with code 0 error

本文关键字:错误 代码 程序 退出 c++      更新时间:2023-10-16

多年来我第一次在工作中使用c++,我试图追踪一个问题。我编写了一些代码,列举了一台机器上运行的进程,并返回了性能指标。我的问题是发生了某种未处理的错误,在调试窗口中,我得到一条消息说程序已经退出,代码为0。下面是main函数

中的代码
    int _tmain(int argc, _TCHAR* argv[])
    {
        while(nRun == 1)
        {
            try
            {
                WriteHeartBeat();
                DoProcessLoop(dwTotalRAM, nCheckPause, oPMeter, cFileName, oProcess, oCPUUsage, nProcCount, ddsCaps2, lpDD);
                CopyPerfFileToDest(cFileName);
                nRun = 1;
                tEnd = time(NULL);
            }catch(...){
                AddToLog("Error in Main Function");
            }
        }
    AddToLog("App Stopped");
    return 0;
    }

程序运行了很长一段时间,但过了一会儿,它只是回来说它退出了代码0,但"App Stopped"行从未打印到日志中。有人知道我可能有什么错误或什么问题可能发生吗?try catch块是否足以捕获任何可能发生的错误,或者我还能做些什么。如果您能提供任何帮助,我将非常感激。

编辑:如果正确退出,日志文件应该从这里得到3个条目。它们是"DoProcessLoop"函数的"Doing ProcessLoop","CopyPerfFileToDest"函数的"copy File"answers"App Stopped",如果它正确停止的话。当我让它正确停止时,我得到所有3行,当它停止不正确时,我只在日志中得到"做过程循环",然后以代码0退出。错误一定在这里。我很好奇是否有一个通用的错误陷阱,我可以做捕捉任何所有的错误。

如果从_tmain调用的函数之一调用exit(0):

http://www.cplusplus.com/reference/clibrary/cstdlib/exit/

http://msdn.microsoft.com/en-us/library/6wdz5232.aspx

有时文件没有正确刷新,所以如果AddToLog函数在退出之前延迟写入文件,那么它可能不会写入值。您可以调试程序,看看是否发生了一些奇怪的事情,或者添加一个变量,如status,并在catch函数中设置它,然后在最后返回它,这样您就可以根据值知道是否有错误。

尝试用布尔值改变addtolog的返回值,并使用:

boolean logged=false;
while(!logged){
  logged = AddToLog("App Stopped");
}

这应该防止程序退出,直到写入"App Stopped",这可能是问题所在。