我正在Visual Studio中执行基本的cinder应用程序。这是一个粒子生成(松散地遵循在线Hello Cinder指南。在调试模式下它始终有效。但在发布配置中,它有时不会生成任何粒子。
我最好的猜测是某处有UB,问题是它很难被发现。小的,看似无关的变化可以触发或触发这一点。
例如,更改功能draw
:
spatial_.speed_ += 0.1f * ci::Vec2f(cos(noise * 15.0f), sin(noise * 15.0f));
// ^^^^^
// this value
除1.0f以外的任何常数值或没有常数值都不会产生任何粒子。函数draw
中的更改如何影响函数update
中的代码(我生成粒子的位置)。我知道它们根本没有生成,因为我显示了粒子数。
整个程序中的所有这些类型的更改都会导致这种情况(比如更改常量,将参数类型从值更改为引用,添加或删除输出到console()的行)。
我不希望你们调试我的代码,这就是我没有把代码放在这里的原因 我只是迷失在如何处理这个问题上。我的问题是我该如何进行诊断?我有什么选择,我必须从这里采取什么步骤?
我面临的问题:
debugging information for ***.exe cannot be found or does not match. Binary was not build with debug information
)中进行调试,并且使用工具提示the breakpoint will not be currently hit (no symbols have been loaded for this document)
更新
draw
函数中的任何代码,将生成粒子。如果我删除代码中的粒子大小,将生成粒子。如果删除运动代码,将生成粒子。如果我删除用于绘制粒子的代码,则将生成粒子。如果我删除粒子初始位置的代码,将生成粒子,如果我删除了去除死粒子的代码,粒子就会生成。我发现它唯一保留的错误是如果我更改了fps设置,所以是的,我知道设置fps不会导致问题,所以欢呼。