如何指定一个单独的函数,该函数将在运行时自动调用以防止程序崩溃?
答案 0 :(得分:2)
如上所述,最好的事情是确定崩溃的区域,然后修复代码段。这是理想主义的方法。
如果您无法找到另一种选择,那就是在您怀疑发生崩溃的区域进行结构化异常处理。崩溃发生后,您可以捕获所需的数据并进行处理。同时,您可以更改Windows服务管理器中的设置,以便在崩溃时重新启动应用程序。希望这能回答你的问题。
此外,如果您正在寻找捕获崩溃的方法并分析debugdiag和windbg是人们用来执行崩溃转储的一些标准工具。
答案 1 :(得分:1)
如果您在Windows中需要编写自己的自定义运行时检查处理程序。使用:
_RTC_SetErrorFunc
安装自定义功能代替
_CrtDbgReport.
这是一篇关于如何做的好文章:
http://msdn.microsoft.com/en-us/library/40ky6s47(VS.71).aspx
答案 2 :(得分:0)
如果出现运行时错误,则表示未处理的异常,不执行。如果未通过代码传播无法处理的异常,则希望您的应用程序崩溃。也许在下来的路上创建转储文件。但是你要做的最后一件事就是抓住异常,什么也不做,继续运行,好像首先没有发生任何事情。
当生成异常时,导致问题的任何原因都可能产生其他影响。喜欢吹栈或破坏堆。如果您默默地忽略这些异常并继续运行,您的应用程序可能会运行一段时间并且看起来没问题,但下面的内容不稳定。内存可能已损坏,资源可能无法使用,谁知道。你最终会崩溃。无论如何忽略未处理的异常并运行,你所做的就是延迟不可避免的事情,并使诊断真正的问题变得更加困难,因为当你崩溃时,堆栈将完全不同并且可能与导致最初问题的地方无关。