VS2022 17.4.4 社区调试器,旧编译器工具集在悬停时不显示变量值

VS2022 17.4.4 Community debugger with older compiler toolsets not showing variable values on hover

提问人:choes 提问时间:2/3/2023 更新时间:2/17/2023 访问量:145

问:

我正在使用 Visual Studio 2022 进行日常开发,我有绑定到较旧库或平台的二进制文件,因此我将平台工具集属性设置为较旧版本。

但它没有在悬停时显示变量值。

enter image description here

enter image description here

如果将平台工具集修改为 Visual Studio 2022(v143),则有效。

enter image description here

enter image description here

谁能帮我解决这个调试问题?提前致谢。

visual-studio visual-c++ visual-studio 调试

评论

0赞 choes 2/3/2023
我用 2022 版重新安装了 vs17.2.5,它现在可以工作了。
0赞 Dou Xu-MSFT 2/3/2023
嗨,很高兴知道您已经找到了解决此问题的解决方案。您可以发布答案并接受自己的答案。这将帮助遇到相同问题的其他用户。
0赞 choes 2/3/2023
如果您在单击“回答您的问题”时尝试回复答案,则会显示“评论”。
0赞 Dou Xu-MSFT 2/6/2023
不应为真正的解决方案添加注释。因为这样一来,遇到类似问题的人在搜索时会认为这个问题没有解决办法。如果您确实解决了此问题,请在提示后选择“是的,我想发布答案”以分享您的解决方案。并通过接受答案来结束这个问题,以便将来遇到类似问题的人可以快速找到解决方案。
0赞 Dou Xu-MSFT 2/6/2023
有关详细信息,您可以参考内容。

答:

0赞 Dou Xu-MSFT 2/17/2023 #1

我在 VS2022 17.4 中使用编译器 VS2010 进行了测试,并重现了该问题。但我发现是 c++ 中的一种类。在本地窗口中使用旧的编译器工具集 VS2010 进行调试时,它确实返回类类型数据结构。展开 ,您将在 char* 类型数据结构中看到 中的值。您可以在监视窗口中添加,您会看到它以 char* 类型显示值。 c_str返回一个 const char*,它指向一个以 null 结尾的字符串(即 C 样式的字符串)std::stringstrtest_Bufstr. c_str()enter image description here enter image description here

我想在两次编译之间在调试模式下显示字符串类型变量值的差异的原因取决于编译器。 如果你想让它在VS2010编译器的悬停时显示变量值,这里有一个解决方法来实现它。

 const char* str = "test";
 char str[] = "test";

评论

0赞 choes 3/1/2023
感谢您对此问题的调试。我们将工具集升级到 v143,我不打算深入研究它。