c++ - 全局变量析构函数未调用,从哪里开始?

标签 c++ windows visual-c++

我面临着我的应用程序全局变量析构函数未被调用的问题。似乎只有当我的应用程序成功连接到 Oracle 数据库(使用 OCI)时才会发生这种情况。

我在 CRT 中放置了一些断点,似乎 DllMain(或 __DllMainCRTStartup)没有用 DLL_PROCESS_DETACH 调用,因此没有调用 atexit(),这解释了为什么我的析构函数没有被调用。 我不知道为什么会发生这种情况。

我意识到这可能没有足够的信息来表明原因,但我的问题是:寻找此问题原因的一个好的开始是什么?

这是我已经尝试过的事情的列表:

  • 在网络上搜索解决方案
  • 连接了调试器并启用 native 异常以查看是否存在隐藏的崩溃,有时我在 .Net 框架中遇到异常,但应用程序似乎仍在继续。
  • 尝试在小型应用程序中重现,但没有成功

最佳答案

我遇到的最常见的情况是程序崩溃。在某些情况下,从最终用户的角度来看,崩溃可能会悄悄发生。我会将调试器附加到程序,将其设置为在所有 native 异常上中断并运行场景。

关于c++ - 全局变量析构函数未调用,从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493796/

相关文章:

visual-c++ - 解决方案文件

c++ - 同类的类(class)成员?

c++ - 顶级 qml 文件中的 Repeater 元素导致 QtQuick 1.1 (QtCreator 3.5.1) 中的绑定(bind)循环

c++ - 如何存储 CUDA 内核函数的 bool 结果

c++ - 如果互斥体和数据项在内存中靠近在一起,那么缺点在哪里?

windows - 如何将 firebird 作为应用程序运行?

python - 如何将 .pyd 文件作为 python 模块导入?

c++ - 使用 msvc 时,有没有办法获得有关错误上下文的更好信息? (例如 : C2248)

c++ - 2个类之间的双向关联

windows - 有什么方法可以在没有开发者许可的情况下安装 'metro' 应用程序?