我正在使用的一些代码存在一个奇怪的问题:据我所知,据我检查,代码中没有依赖任何随机的组件,例如系统时间等。但这足以只需在代码中添加一个断点,程序的行为就会发生变化。它没有做错任何事情,只是表现不同(在代码中通过某个值选择了几个对象,所有对象都为 0 - 它只是在添加断点时选择值为 0 的不同对象) . 不幸的是,不可能发布任何代码,因为它太多了。
什么可能导致这种行为?
编辑:我在这个问题上花了更多时间:它似乎与断点本身无关 - 产生不同结果的“最简单”方法如下:从项目的不同 .cpp 文件启动调试过程时输出已经不同了。当禁用“自动构建”时,这不再发生。我由此得出结论,即使代码没有变化,也会重建一些东西。我还将其范围缩小到实际导致不同行为的类:它是斐波那契堆的实现。