1

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

  1. 单线程应用程序
  2. 使用异常处理
  3. 使用超过 6 个 DLL 来访问不同的硬件
  4. 在 WinXP SP2 上运行

最初我认为这可能是因为Stack Overflow,后来我发现它不是。有人能告诉我程序异常终止的所有一般原因是什么吗?如果有人遇到过类似的问题或有任何提示或线索,请转发。

提前致谢

4

2 回答 2

3

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

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

可能还有:

  • 有一个未处理的异常
  • 在您的 MFC 中发现错误
  • 您的>6 个硬件访问 DLL 中的一个正在执行上述任何操作
  • 您遇到某种硬件故障

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

有很多选择:P

于 2009-12-17T23:14:41.667 回答
0

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

于 2009-12-18T00:37:16.967 回答