【发布时间】:2021-12-16 11:44:57
【问题描述】:
我正在使用 Visual Studio 2017。“资源”是图像中类函数的私有成员。一旦我进入第 3101 行,所有与“资源”相关的信息都会在第 3103 行丢失。我的意思是,所有成员都被标记为“无法读取内存”或???在监视对话框中。
最初,我认为有另一个线程正在改变这个结构,但事实并非如此。我可以在 3090 和 3103 之间拖动调试行,您可以看到调试资源的能力得到了(在 3090 行)和失去了(在 3103 行)。
【问题讨论】:
-
看起来变量被核弹了,原因在提供的示例中并没有立即显现出来。考虑制造minimal reproducible example,以后不要那么依赖图像。它们几乎没有一个好的、孤立的文本示例那么有用,潜在的回答者可以放入他们的工具并进行自己的调查。
-
你在运行Debug项目配置吗?在 Release 中,您仍然可以调试,但一些变量被优化掉了。
-
我建议查看您的函数的汇编语言列表。然后,您可以查看变量是否已放入寄存器。汇编语言列表还将显示变量是否被优化掉(例如,如果某个变量不再在一段代码中使用)。
-
@user4581301 我想如果我可以生成一个最小的可重现示例,我将能够创建问题,从而知道根本原因以及如何解决它。在这种情况下,我不必发布问题???我已经使用这个特定变量一年多了,没有任何问题,只是不确定为什么对于代码的这个特定部分突然出现问题。而在这个特殊的 else if 语句中。
-
@Eugene 感谢您的评论。我处于调试模式和混合平台。我绝对可以在代码中的任何地方调试和查看对象成员,我希望它是可见的(即在范围内)。它似乎只是这个特殊的 else if 语句,其中调试器似乎没有关于对象的信息。
标签: c++ debugging scope visual-studio-2017