Visual Studio 2012和Qt4.8.5:如何在调试模式下查看QString内容.

xav*_*SIB 16 visual-studio-debugging qt4.8 visual-studio-2012

我使用visual studio 2012和Qt4.8.5,遗憾的是当我在调试模式下工作时,我看不到QString文本变量.有人有提示允许吗?VS2012不存在Qt4.8.5插件.

非常感谢

泽维尔

Dom*_*Cat 16

有一个快速而明确的解决方案(MSVC原生,不需要插件也不需要设置.dat文件), 从这里看我的答案

假设您有QString str(Qt4),然后添加到调试器监视窗口:

((str).d)->array,su 
Run Code Online (Sandbox Code Playgroud)

附录,su告诉调试器将数据解释为unicode和null终止字符串.

注意:对于Qt5, QString str它可能是

(char*)str.d + str.d->offset,su
Run Code Online (Sandbox Code Playgroud)


use*_*363 7

autoexp.dat不得使用,除非你设置调试器选项" 启用本地编辑并继续 "

这是我对4.8.5的QString的natvis实现(仅展开前25个字符)

<Type Name="QString">
    <DisplayString>"{d->data,sub}"</DisplayString>
    <StringView>d->data,sub</StringView>
    <Expand>
        <Item Condition="d->size &gt;= 0" Name="[size]">d->size</Item>
        <Item Condition="d->size &gt; 0" Name="[referenced]">d->ref._q_value</Item>
        <ArrayItems Condition="d->size&lt;=25">
            <Size>d->size</Size>
            <ValuePointer>d->data,c</ValuePointer>
        </ArrayItems>
        <ArrayItems Condition="d->size&gt;25">
            <Size>25</Size>
            <ValuePointer>d->data,c</ValuePointer>
        </ArrayItems>
        <Item Condition="d->size&gt;25" Name="...">d->size - 25</Item>
    </Expand>
</Type>
Run Code Online (Sandbox Code Playgroud)

至少qt4.natvis可以与qt5.natvis共存,因为一个或另一个无法正确加载...


Nic*_*MAN 6


对于 Visual 2015、2017 和 2019,
只需安装 Visual 专用的 Qt 插件即可。 从这里
下载