在 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&lt;unsigned short*&gt;(d)) + d->offset / 2),sub</DisplayString>
    <DisplayString ExcludeView="nq">"((reinterpret_cast&lt;unsigned short*&gt;(d)) + d->offset / 2),sub"</DisplayString>
    <StringView>((reinterpret_cast&lt;unsigned short*&gt;(d)) + d->offset / 2),sub</StringView>
    <Expand HideRawView="true">
        <Item ExcludeView="simple" Name="[size]">d-&gt;size</Item>
        <Item ExcludeView="simple" Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
        <ArrayItems ExcludeView="simple">
            <Size>d-&gt;size</Size>
            <ValuePointer>((reinterpret_cast&lt;unsigned short*&gt;(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

使用 Visual Studio 2015 在 gulp 中检测发布/调试

VS2015--在 Visual Studio 中调试时映射调用堆栈上的方法