我面临着我的应用程序全局变量析构函数未被调用的问题。似乎只有当我的应用程序成功连接到 Oracle 数据库(使用 OCI)时才会发生这种情况。
我在 CRT 中放置了一些断点,似乎 DllMain(或 __DllMainCRTStartup)没有用 DLL_PROCESS_DETACH 调用,因此没有调用 atexit(),这解释了为什么我的析构函数没有被调用。 我不知道为什么会发生这种情况。
我意识到这可能没有足够的信息来表明原因,但我的问题是:寻找此问题原因的一个好的开始是什么?
这是我已经尝试过的事情的列表:
- 在网络上搜索解决方案
- 连接了调试器并启用 native 异常以查看是否存在隐藏的崩溃,有时我在 .Net 框架中遇到异常,但应用程序似乎仍在继续。
- 尝试在小型应用程序中重现,但没有成功
最佳答案
我遇到的最常见的情况是程序崩溃。在某些情况下,从最终用户的角度来看,崩溃可能会悄悄发生。我会将调试器附加到程序,将其设置为在所有 native 异常上中断并运行场景。
关于c++ - 全局变量析构函数未调用,从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493796/