作业失败

时间:2009-06-01 19:23:28

标签: c++ debugging visual-studio-2005 variable-assignment

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

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

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

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

导致此行为的原因是什么?

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

疯狂。如果你有一个与this->值相同类型的局部变量,其名称也是值(这可以解释为什么你通过this->引用一个成员)?

答案 2 :(得分:0)

您是在调试模式还是发布模式下执行此操作?如果您在发布模式下执行此操作,或者在启用优化时,编译器可能会重新排序以获得更高性能,这可能会导致看起来很奇怪的结果。这并不意味着实际执行中出现任何问题,但可能会让人感到困惑。