在 Visual Studio 2015 上调试时如何查看 Qt5 QString 内容

Posted

技术标签:

【中文标题】在 Visual Studio 2015 上调试时如何查看 Qt5 QString 内容【英文标题】:How to see Qt5 QString contents while debugging on Visual Studio 2015 【发布时间】:2020-01-27 15:50:30 【问题描述】:

我正在使用 Visual Studio 2015 和 Qt5。

我已经在 Vislaualizers 文件夹中添加了 qt5.natvis。 我在工具 > 选项 > 调试 > 常规菜单中设置了“使用本机兼容模式”选项。

即便如此,调试时 QString 值也不会正确显示。 Locals/Autos/Watch 窗口上仅显示内存方向。有什么想法吗?

我已经为本地诊断消息设置了详细选项,这就是我得到的:

Natvis: Parsing natvis xml file: D:\<user_name>\Documents\Visual Studio 2015\Visualizers\qt5.natvis.
Natvis: Fatal error: 
Natvis: Parsing natvis xml file: C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\EXTENSIONS\MICROSOFT\PYTHON TOOLS FOR VISUAL STUDIO\2.2\PythonDkm.natvis.
Natvis: Fatal error: 
Natvis: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers\qt.natvis(128,25): Error: a pointer to a bound function may only be used to call the function
Error while evaluating 'd->data,sub' in the context of type '<executable>!QString'.
Natvis: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers\qt.natvis(127,6): Ignoring visualizer for type 'QString' labeled as 'QString' because one or more sub-expressions was invalid.

【问题讨论】:

嗨,欢迎来到 ***!请edit您的问题以澄清您的具体问题或添加其他详细信息以准确突出您的需求。 “看不到 QString 值”是什么意思?请参阅How to Ask 页面以获得澄清此问题的帮助。 【参考方案1】:

来自用于 MSVS 的 qt 插件的原始 qt5.natvis 包含一些奇怪的问题。我使用alternative natvis。 我不确定这是否会在 MSVS 2015 上正常工作,如果可以,你可以请作者帮助你

【讨论】:

【参考方案2】:

您需要使用较旧的 natvis 文件。您正在使用的那些似乎使用了 VS 2015 中不可用的功能。

natvis 文件来自qt-labs/vstools 存储库。 GitHub的在线浏览器显示two revisions for src/qtvstools/qt5.natvis.xml,一个是2018年的,一个是2020年的。

2018 年的修订版也将文件从 src/qtvisualizer/qt5.natvis.xml, with one prior revision 重命名。

由于最旧的修订版是 2016 年的,也许 VS 2015 对你有用。

【讨论】:

【参考方案3】:

也许您的“Qt 调试信息文件”组件没有安装。您可以在初始安装后使用维护工具添加任何缺少的组件。

【讨论】:

以上是关于在 Visual Studio 2015 上调试时如何查看 Qt5 QString 内容的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015 / Xamarin,调试不工作:执行 MTouch 时出错

加载 Visual Studio 2015 C++ 项目时出错,如何调试

Visual Studio 2015 远程调试不兼容平台错误

在 Android 上使用 Visual Studio 2015 进行调试停止工作

Visual Studio 2015 远程调试器没有调试器成员或监视表达式返回值

在 Visual Studio 2015 中调试时无法解析参数名称类型 ISession