gpt4 book ai didi

c++ - Visual Studio 2010 Professional 中的监视值不正确

转载 作者:太空狗 更新时间:2023-10-29 20:17:13 24 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题,其中某些变量的监 window 口值似乎与它们的“真实世界”值不匹配。调试器似乎在太空中关闭了。这是显示它的最小代码片段:

printf("%d", pNodes[nNode].nColumn); // watch shows "4"
printf("%d", nColumn); // watch shows "1"

if (pNodes[nNode].nColumn != nColumn)
continue; // this is NOT called

所以这是行为:

  1. 如果我将 watch 添加到 pNodes[nNode].nColumn , 它显示的值为 4 .
  2. 如果我将 watch 添加到 nColumn , 它显示的值为 1 .
  3. 如果我检查表达式 pNodes[nNode].nColumn != nColumn在监 window 口中,它计算为 true .
  4. continue语句被跳过!
  5. 我添加了 printf()打电话看看发生了什么,printf()打印值 11 ,这似乎与代码“流动”的方式一致(即它continue 语句中调用 if

我什至可以在 &pNodes(nNode].nColumn 处检查内存,并且内存显示监 window 口向我显示的“不正确”值。所以调试器似乎与实际程序数据或其他东西完全“断开连接”。我正在运行调试构建优化已关闭。我还检查过 pNodes 不对应于某些全局变量或范围更高的其他变量——似乎只有本地版本。

这让我完全莫名其妙!我什至不确定下一步该去哪里尝试找出问题所在。如果您有任何想法,我很想听听!

谢谢!

最佳答案

所以我想我已经破案了:罪魁祸首是结构成员对齐。我有一堆项目混合在一起,其中一些在项目内部对这个领域有不同的值(value)。我删除了所有这些设置,让 VS 选择默认设置,问题就消失了。

在某些项目中适用的值介于4 字节 之间,在某些项目中为默认值,而在其他项目中则完全为空。该值位于Configuration Properties/C/C++/Code Generation/Struct Member Alignment 下。同样,我最终只是完全删除了项目的值。我认为这在过去的某个时候是在项目上设置的,以处理某种跨平台问题,但至少它已针对我现在所做的工作进行了修复!

感谢您的帮助!

关于c++ - Visual Studio 2010 Professional 中的监视值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com