我正在使用的一些代码存在一个奇怪的问题: 据我所知,据我所知,代码中没有组件,它依赖于任何随机的,如系统时间等。 然而,仅在代码中添加断点并且程序的行为发生变化就足够了。它没有做任何错误,它只是表现不同(在代码中有几个对象要通过某个值选择,对于所有这些对象都是0 - 它只是选择一个不同的对象,其中在添加断点时值为0) 。 不幸的是,发布任何代码是不可能的,因为它有太多的代码。
什么可能导致这种行为?
编辑: 我花了一些时间来解决这个问题:它似乎与断点本身无关 - 产生不同结果的“最简单”方法如下:从项目的另一个.cpp文件启动调试过程时输出已经变化了。当禁用“自动构建”时,这不再发生。我的结论是,即使代码没有变化,也会重建一些东西。 我还将它缩小到实际导致不同行为的类:它是斐波那契堆的实现。
答案 0 :(得分:0)
如果您未在Windows上运行,请考虑使用Valgrind - these are the supported platforms。 Memcheck工具将运行您的程序(较慢),查看每个内存引用以跟踪未初始化变量的使用。
Memcheck可以检测您的程序: