2009-06-01 175 views
1

我正在调试Visual Studio 2005中的一个大型项目的一部分,并逐行逐句通过代码。作业失败

int speed = this->values.speed; 
int ref = this->values.ref_speed; 

步进过去的第一行之后,values.speed具有61的值,但由于某些原因,速度是越来越分配值58的第二行之后,values.ref_speed具有58的值,但引用被分配值30.

暂停时,您可以看到原始值实际上分别是61和58,但获取的值是不同的。

是什么导致了这种行为?

+2

它是一个多线程应用程序吗? – Robert 2009-06-01 19:28:45

+0

如何发布一些值的代码? – JeffH 2009-06-01 19:29:26

+0

是的。但是,该特定位置只能写入一次。 – 2009-06-01 19:29:57

回答

6

如果值结构的定义在头文件中发生了更改并且没有重新编译所有对象文件,则可能会发生这种情况。然后,此文件中代码结构的“映射”可能与代码的其余部分不匹配。这可以解释为什么其中一个变量似乎具有其他的价值。

或者Visual Studio .pdb文件由于某种原因没有得到更新,并且Visual Studio正在寻找变量的旧地方。

0

你是在调试还是释放模式下这样做?如果你在发布模式下或者在优化模式下进行,编译器可能会重新排序以获得更好的性能,这可能导致奇怪的结果。这并不意味着在实际执行过程中出现任何错误,但可能会让人困惑。

+0

这发生在调试模式下。 – 2009-06-01 19:32:44

1

疯了。任何机会你有一个局部变量相同的类型this->值的名称也是值(这将解释为什么你通过this->引用成员)?