在 Visual Studio 2013 中是不是有用于调试 Qt 4.8 项目的非官方可视化工具?

Posted

技术标签:

【中文标题】在 Visual Studio 2013 中是不是有用于调试 Qt 4.8 项目的非官方可视化工具?【英文标题】:Is there any unofficial visualizer for debugging Qt 4.8 projects in Visual Studio 2013?在 Visual Studio 2013 中是否有用于调试 Qt 4.8 项目的非官方可视化工具? 【发布时间】:2015-05-05 07:39:02 【问题描述】:

在 Visual Studio 2013 中调试对 Qt 4.8 类型的支持需要哪些文件?我听说过 *.natvis 文件,但我只找到了适用于 Visual Studio 2013 的 Qt5 *.natvis 文件或适用于 Visual Studio 2012 的 Qt4 *.natvis。它们对我不起作用。 Visual Studio 2012 *.natvis 和 Visual Studio 2013 *.natvis 不兼容吗?

【问题讨论】:

【参考方案1】:

任何一个都应该“工作”,但要知道 Qt 5 natvis 将引用不同的对象结构,例如QString 在 Qt 5 中有一个成员 offset,但在 Qt 4.8 中没有。我从 Qt VS 插件中获取了 Qt5.natvis 以及任何不起作用的东西,我打开了 autoexp.dat(这样做的旧方法)来查看 VS 插件创建的 Qt 修改并进行适当的更改。

autoexp.dat 中的 QString:

QString|*::QString
    preview         ([$e.d->data,su])
    stringview      ([$e.d->data,sub])
    children
    (
        #(
            d: $c.d,
            [size]: $c.d->size,
            [referenced]: $c.d->ref._q_value
        )
    )

Qt5.natvis 中的QString:

<Type Name="QString">
    <DisplayString>((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>
        <Item Name="[size]">d-&gt;size</Item>
        <Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
        <ArrayItems>
            <Size>d-&gt;size</Size>
            <ValuePointer>((reinterpret_cast&lt;unsigned short*&gt;(d)) + d->offset / 2),c</ValuePointer>
        </ArrayItems>
    </Expand>
</Type>

您是如何尝试安装它们的?你得到什么错误?它们可以放在 Documents\Visual Studio 2015\Visualizers 中以由 IDE 添加,也可以将它们放在项目树中并添加到项目中。

【讨论】:

您介意分享您的 qt4.natvis,例如作为 GIST?

以上是关于在 Visual Studio 2013 中是不是有用于调试 Qt 4.8 项目的非官方可视化工具?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 RC 是不是向后兼容 Visual Studio 2013 解决方案?

SQL Server Compact 是不是已从 Visual Studio 2013 中终止?

在 Visual Studio 2013 中是不是有用于调试 Qt 4.8 项目的非官方可视化工具?

Visual Studio Express 2012 或 Express 2013 中是不是提供 64 位编译器?

检测是不是安装了 Visual C++ Redistributable for Visual Studio 2013

在 3.5 而不是 2.0 中编译的类库 - 从 Visual Studio 2008 迁移到 2013