Visual Studio 调试器的奇怪行为

Wierd behavior with Visual Studio Debugger

当 运行 VS 使用专用 GPU 时,我使用 Visual Studio 的调试器遇到了一些奇怪的行为。

奇怪的是,当我终止正在构建的程序时,调试器仍保持打开状态。 运行 VS 集成显卡时我看不到这个。另外 - 我检查了是否有线程或 COM 对象仍然存在并且有一个活动线程,但没有 COM 引用。

我觉得很奇怪。你们有没有经历过类似的事情?我错过了一些明显的东西吗? 运行 VS Dedicated GPU 时是否有需要更改的设置或特殊规则?

它并没有真正伤害到任何东西——但它让我的强迫症爆发了。 ;)

提前感谢大家的建设性意见:D

最诚挚的 阿尔法银背

为了找到答案,我已经网上冲浪了很长时间。 运行 具有不同图形加速器的应用程序之间的区别仅在于当应用程序 运行 使用专用 GPU 时,WinMain 已 returned 后线程不会终止。

要解决此问题 - 我通过实验发现显式调用任何活动对象的析构函数,然后在 WinMain 之前调用 std::exit(return 代码) return 调用将正确终止所有线程。不过,不同的硬件产生不同的行为仍然很奇怪。此解决方案适用于两者。

**Example**:
WinMain(...){
.
.
.
object.~Class();
std::exit( return-code );
//return return-code;
}

我不喜欢这个答案,因为没有必要。

如果您找到其他方法,请确保添加解决方案。提前谢谢你。

最真诚的, 阿尔法银背