什么会导致程序异常终止?

时间:2009-12-17 22:36:59

标签: c++ mfc termination

MFC应用程序(使用SQLite3.dll进行数据库访问,以及其他用于访问硬件的DLL)异常终止。没有特定的终止顺序:( 我的申请是

  1. 单线程应用程序
  2. 使用异常处理
  3. 使用6个以上的DLL来访问不同的硬件
  4. 在WinXP SP2上运行
  5. 最初我认为可能是因为 Stack Overflow ,后来我发现它不是。有人能告诉我程序异常终止的一般原因是什么?如果有人遇到类似问题或有任何提示或线索,请将其传递给他们。

    先谢谢

2 个答案:

答案 0 :(得分:3)

一般来说,崩溃的一般原因是:

  • 读取不属于您的内存
  • 写出不属于你的记忆
  • 除以零
  • 在你不应该
  • 的中断中做一些事情
  • free()不止一次指针

也可能:

  • 有一个无法解除的例外
  • 在您的MFC中发现了一个错误
  • 您的> 6 硬件访问DLL之一正在执行以上任何操作
  • 您遇到某种硬件故障

也许您将一个错误的缓冲区传递给您的某个硬件DLL,或者忘记锁定某些内存,或者您甚至可能在DLL和它们的标头之间存在版本不匹配。

有很多选择:P

答案 1 :(得分:0)

由于这是一个运行时问题,我建议您将调试语句发送到日志文件。包括函数名称和可能的时间戳。写入文件后始终刷新输出缓冲区,因为这样可以更有可能在异常发生之前将最后一行写入文件。