未在附加调试器的情况下运行时程序中断
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 调试堆,它会使用特定模式预先填充堆分配的内存,而当“正常”凝视时,您会获得其中包含任何内容的页面(通常在程序启动时为零)。查看正在发生的事情的一个可行技巧是在程序启动后附加调试器。以上是关于未在附加调试器的情况下运行时程序中断的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Xcode 在运行时问题(表示为紫色的小三角形)被发现时就立即中断以供调试
如何让 Xcode 在运行时问题(表示为紫色的小三角形)被发现时就立即中断以供调试