Visual Studio 调试器显示本机类型的错误值

Posted

技术标签:

【中文标题】Visual Studio 调试器显示本机类型的错误值【英文标题】:Visual Studio Debugger displays wrong values for native types 【发布时间】:2013-04-27 09:45:24 【问题描述】:

我正在使用 Visual Studio 2008(版本 9.0.30729.1 SP)和 .NET 3.5 在托管 C++ 和本机 C++ 中编写程序。 调试时,Visual Studio 会为 size_t 和本机指针等类型显示明显错误的值。 使用消息框,我可以验证实际值是否正确。 有没有办法解决这种行为?

这里有一个截图来澄清我的意思:

【问题讨论】:

你运行的是调试版的程序吗?我似乎记得在运行发布版本时读取变量存在“有趣”。不过是前一段时间没有的,所以我可能记错了。 是的,我正在运行调试版本。 【参考方案1】:

似乎将Configuration Properties 下的Common Language Runtime SupportPure MSIL Common Language Runtime Support (/clr:pure) 切换到Common Language Runtime Support ( /clr) 可以解决问题。我现在可以很好地查看原生对象了。

【讨论】:

【参考方案2】:

尝试安装KB957912(Visual Studio 2008 SP1 调试和断点更新),它可能会对您有所帮助。

【讨论】:

我安装了更新,但没有任何改变。【参考方案3】:

我不知道 g_pGame 的类型是什么,但可以为 Visual Studio 编写扩展,以便查看自定义类型的值。尽管该功能主要针对其他用途,例如您拥有自己的 String 容器并且您知道它的内部细节并且您只想查看其中的字符串值。所以通常它不是为了解决不当行为。此外,编写这样的扩展需要付出努力,而且它不会帮助解决其他类型的问题。但我想让你知道。

【讨论】:

以上是关于Visual Studio 调试器显示本机类型的错误值的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio调试本机代码

在Visual Studio调试器中显示Unreal的数据类型的值

Visual Studio 混合项目调试

在 Visual Studio 2015 中调试本机应用程序加载的托管 DLL

从 Visual Studio 2012 调试 VB6 代码

在 Visual Studio 中查看反汇编代码