在 Visual Studio 2013 调试中显示 QString (Qt5) 内容?

Posted

技术标签:

【中文标题】在 Visual Studio 2013 调试中显示 QString (Qt5) 内容?【英文标题】:Display QString (Qt5) content in Visual Studio 2013 debugging? 【发布时间】:2015-04-20 10:21:57 【问题描述】:

我曾经在谷歌上搜索过很多关于它的信息。

我启用了 Debugging -> Edit and Continue in Native Only 选项 我试图将 Visualizers 添加到 Visual Studio 2013\Visualizers codeplex 上的 vstools 项目似乎不适用于 2013 年

但到目前为止没有任何帮助......

【问题讨论】:

你试过Visual Studio Add-in吗?也看看wiki.qt.io/IDE-debug-helpers#MS_Visual_Studio_2013 @m.s.yes,好像 2010 是最后一个支持的版本 code.qt.io/cgit/qt-labs/vstools.git/tree/Qt4VS2003/… 更多链接,应该会有所帮助:forum.qt.io/topic/34189/qt-in-visual-studio-2013/2 和 download.qt.io/official_releases/vsaddin/… @m.s.我安装了它,添加了 qt 但我仍然看不到 QString 内容... 我推荐使用这个预建插件:VS 2013 addin 【参考方案1】:

有一个明确的、原生的 MSVC 解决方案,无需使用插件等:see my answer from here

假设你有QString str,然后添加到调试器会话监视窗口

Qt4

((str).d)->array,su 

Qt5 稍微复杂一些:

(char*)str.d + str.d->offset,su

【讨论】:

【参考方案2】:

我搜索了这个问题的答案很长时间,最终成功通过尝试检查/取消选中提到的选项看到了 QString 内容。希望可以帮助别人。

display qstring content

    安装qt-vs-addin-msvc2013-2.0.0-beta.vsix 取消选中工具->调试->编辑并继续->启用本机编辑并继续Uncheck TOOLS->Debugging->Edit and Continue->Enable native Edit and Continue

【讨论】:

感谢您提供“启用本机编辑并继续”设置和屏幕截图的完整路径。这对我有帮助。【参考方案3】:

我知道这个问题已经有一段时间了,但如果相关,对于 VS 2013,请转到

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Packages\Debugger\Visualizers"

并在文本文件中添加来自下面链接的代码并将其命名为 qt5.natvis。 对于 VS 2019,位置为:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Packages\Debugger\Visualizers"

希望这会有所帮助。

pastebin code for seeing qt variables in visual studio

【讨论】:

该文件中的所有 QVariant 检查会减慢调试会话的速度吗?【参考方案4】:

通过禁用Debugging -> Edit and Continue 管理查看QString 内容

不确定是否有更好的解决方案

【讨论】:

在没有 Qt Visual Studio 插件的情况下这也可以工作吗? @m.s.我不知道,但我想是的 如果没有加载项(在 VS 2013 中测试),这将不起作用

以上是关于在 Visual Studio 2013 调试中显示 QString (Qt5) 内容?的主要内容,如果未能解决你的问题,请参考以下文章

远程调试windows 8.1驱动Visual Studio 2013

Visual Studio 2013 远程调试,自动部署?

visual studio 2013 远程调试监视器找不到指定的文件

vmware + visual studio 2013内核调试

如何在 WinXP 上为使用 Visual Studio 2013 构建的应用程序进行远程调试?

OpenGL 程序仅在 Visual Studio 2013 中的调试模式下工作