在 Visual Studio 2015 调试器中查看 Qt5.6 QStrings
Posted
技术标签:
【中文标题】在 Visual Studio 2015 调试器中查看 Qt5.6 QStrings【英文标题】:View Qt5.6 QStrings in Visual Studio 2015 Debugger 【发布时间】:2016-04-30 17:46:16 【问题描述】:似乎在 Visual Studio 2015 调试器中可视化 Qt5.6 QStrings 不能像在 Visual Studio 2013 及之前的版本中那样使用标准的 QString 可视化方式(向 Visual Studio 2015\Visualizers 添加 natvis)。 它是否正确?有没有人设法在 VS 2015 中添加 QString 可视化?
【问题讨论】:
【参考方案1】:你可以试试Qt Visual Studio Tools
【讨论】:
【参考方案2】:一段时间以来,我在 VS 2015 中使用 Qt 5.6 成功地做到了这一点,尽管更新 3 或我所做的添加开始搞砸了。这是我使用的定义:
<Type Name="QString">
<DisplayString IncludeView="nq">((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),sub</DisplayString>
<DisplayString ExcludeView="nq">"((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),sub"</DisplayString>
<StringView>((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),sub</StringView>
<Expand HideRawView="true">
<Item ExcludeView="simple" Name="[size]">d->size</Item>
<Item ExcludeView="simple" Name="[referenced]">d->ref.atomic._q_value</Item>
<ArrayItems ExcludeView="simple">
<Size>d->size</Size>
<ValuePointer>((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),c</ValuePointer>
</ArrayItems>
</Expand>
</Type>
如果您有现在已弃用的 VS Addin 附带的 Qt5.natvis 文件,我将它添加到我的解决方案中以便我可以修改它。有许多事情不太正确,我一直在添加更多类型。
注意:我添加了一个视图来显示不带引号的字符串,并添加了在其他地方使用view(simple)
来抑制子项的功能,但我认为这在其他方面没有修改。
如果您仍然遇到问题,您可以为 Natvis 开启警告或详细日志记录:
【讨论】:
【参考方案3】:为 Qt 的 Visual Studio 添加调试兼容性的最简单的自动方法是安装 Qt Visual Studio 工具并在项目属性 -> 配置属性 -> 调试中将调试器类型设置为“混合”。
针对 Qt 5.9.1 和 Visual Studio 2015 测试
【讨论】:
以上是关于在 Visual Studio 2015 调试器中查看 Qt5.6 QStrings的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 2015 调试器中确定每一帧的堆栈大小
Visual Studio 2015 远程调试不兼容平台错误
升级到 Visual Studio 2015 现在无法在调试中打断点
在 Visual Studio 2015 中调试时无法解析参数名称类型 ISession