1

我正在 Visual Studio 2005 中调试一个大型项目的一部分,并逐行执行代码。

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

越过第一行后,values.speed 的值为 61,但由于某种原因,speed 被赋值为 58。在第二行之后,values.ref_speed 的值为 58,但 ref 被赋值为 30 .

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

是什么导致了这种行为?

4

3 回答 3

6

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

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

于 2009-06-01T19:43:30.223 回答
1

疯狂的。您是否有可能拥有与 this->values 相同类型的局部变量,其名称也是 values(这可以解释为什么您通过 this-> 引用成员)?

于 2009-06-01T19:40:18.810 回答
0

您是在调试模式还是发布模式下执行此操作?如果您在发布模式下执行此操作,或者启用优化,编译器可能会重新排序以提高性能,这可能会导致看起来很奇怪的结果。这并不意味着实际执行中有任何错误,但单步执行可能会令人困惑。

于 2009-06-01T19:29:41.720 回答