我调试一个大项目的一部分,在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,但要存储的值是不同的。

是什么原因造成这种现象?

有帮助吗?

解决方案

如果该值结构的定义在头文件中得到了改变,而不是所有的目标文件已经重新编译可能发生这种情况。那么“映射”你在这个文件中的代码使用可能不会在代码的其余部分相匹配的结构。这可以解释为什么一个变量似乎有其他的价值。

或Visual Studio的.pdb文件没有得到更新,由于某些原因,和Visual Studio是看在老地方的变量。

其他提示

疯狂。任何机会,你有相同的类型,这个 - >值的名字的局部变量也值(这可以解释为什么你通过这个引用成员 - >)

您在调试或发行模式,这样做呢?如果你这样做是在释放模式,或优化上,编译器可能重新排序的事情了更高的性能,而且可能导致看起来很奇怪的结果。这并不意味着任何事情是错误的,在实际执行中,但它也可能混淆步。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top