未在附加调试器的情况下运行时程序中断

Posted

技术标签:

【中文标题】未在附加调试器的情况下运行时程序中断【英文标题】:Program breaks when not running with debugger attached 【发布时间】:2011-04-30 20:17:20 【问题描述】:

我正在开发一个 2D 引擎,它是用 C++ 编写的,我在 Windows 7 64 位上使用 Microsoft Visual Studio 2010。

我使用 OpenGL 进行硬件加速,现在正在尝试使用帧缓冲区将纹理用作画布。 (例如允许用户在屏幕上绘画)

现在这个帧缓冲区可以正常工作了,只要我启动带有调试器的程序 (F5)

如果我从 IDE 外部启动程序,或者在没有调试器 (CTRL+F5) 的情况下启动程序,我无法绘制纹理,但每帧都会出现闪烁和 OpenGL 堆栈下溢错误。

我真的不知道从哪里开始寻找问题,您能帮帮我吗?

【问题讨论】:

你的程序是多线程的吗? 首先检查您是否将所有 .dll 与 .exe 放在同一文件夹中。如果有,请尝试更改项目属性 (alt+F7) 配置属性-> c/c++ -> 代码生成和在右侧菜单中将运行时库更改为 /MTd 【参考方案1】:

我不能确定,但​​可能是以下几种情况之一:

调试器(有时)初始化为 0 的未初始化变量 由于时间不同而未显示的竞争条件

【讨论】:

+1 表示未初始化的变量,尤其是堆分配的变量。从调试器启动时,您会获得 Windows 调试堆,它会使用特定模式预先填充堆分配的内存,而当“正常”凝视时,您会获得其中包含任何内容的页面(通常在程序启动时为零)。查看正在发生的事情的一个可行技巧是在程序启动后附加调试器。

以上是关于未在附加调试器的情况下运行时程序中断的主要内容,如果未能解决你的问题,请参考以下文章

附加调试器的 C++/opengl 应用程序运行更流畅

如何让 Xcode 在运行时问题(表示为紫色的小三角形)被发现时就立即中断以供调试

如何让 Xcode 在运行时问题(表示为紫色的小三角形)被发现时就立即中断以供调试

为啥附加到调试器的运行如此缓慢?

如何在运行时确定您的 C++ 应用程序何时附加了 Visual Studio 调试器?

iOS 应用程序在使用 XCode 调试器启动时崩溃,在没有调试器的情况下运行良好