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

C++ 什么会导致程序异常终止?,c++,mfc,termination,C++,Mfc,Termination,MFC应用程序(使用SQLite3.dll访问数据库,以及其他dll访问硬件)异常终止。没有特定的终止顺序:( 我的申请是 单线程应用程序 使用异常处理 使用6个以上的DLL访问不同的硬件 在WinXP SP2上运行 起初我认为可能是因为堆栈溢出,后来我发现不是。有人能告诉我程序异常终止的一般原因吗?如果有人遇到类似问题或有任何提示或线索,请将其传递给我 提前感谢一般来说,发生车祸的一般原因是: 读取不是你的内存 写下不是你的记忆 除零 在中断中做一些你不应该做的事情 free() 也可能:

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

  • 单线程应用程序
  • 使用异常处理
  • 使用6个以上的DLL访问不同的硬件
  • 在WinXP SP2上运行
  • 起初我认为可能是因为堆栈溢出,后来我发现不是。有人能告诉我程序异常终止的一般原因吗?如果有人遇到类似问题或有任何提示或线索,请将其传递给我


    提前感谢

    一般来说,发生车祸的一般原因是:

    • 读取不是你的内存
    • 写下不是你的记忆
    • 除零
    • 在中断中做一些你不应该做的事情
    • free()
    也可能:

    • 有一个无恶意的例外
    • 在MFC中发现一个错误
    • 您的6个硬件访问DLL之一正在执行上述任一操作
    • 您遇到了某种硬件故障
    可能您正在将一个坏的缓冲区传递给一个硬件DLL,或者忘记锁定一些内存,或者DLL和它们的头之间甚至可能存在版本不匹配


    有很多选择:p

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

    您是否尝试通过调试器运行它?您是否可以在调试器中运行程序,并提供崩溃的堆栈跟踪和/或Visual Studio输出框中的文本?还可以尝试在调试模式下构建,查看是否获得任何断言…或至少是正在执行的代码。是的,我尝试在调试模式下重新创建它,但似乎没有终止不正常。只有在发布模式下才会发生。您还可以尝试向发布版本添加调试符号。这仍然会复制崩溃,但希望在崩溃发生时可以获得堆栈跟踪。