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

问题描述 投票:0回答:7

我使用 Visual Studio 2012 和 Qt4.8.5,不幸的是,当我在调试模式下工作时,我看不到 QString 文本变量。有人有小费允许吗? VS2012 不存在 Qt4.8.5 插件。

非常感谢

泽维尔

visual-studio-2012 visual-studio-debugging qt4.8
7个回答
27
投票

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

假设您有

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

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

附录

,su
告诉调试器将数据解释为 unicode 和以 null 结尾的字符串。

注意:对于 Qt5

QString str
可能是

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

8
投票

除非将调试器选项设置为“启用本机编辑并继续”,否则不会使用 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>

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


6
投票


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


3
投票

对于我来说,在 Qt5 和 Visual Studio 2012 中,我只是这样做了:

项目选项 -> 调试 -> 调试器类型 -> 将其设置为 从 Auto 到 Mixed

手表中不显示字符串。


1
投票

对于 Visual Studio 2015...

工具 > 选项 > 调试 > 常规 > 选中“使用本机兼容模式”


0
投票

对我来说,这适用于 QString qStr :

p qStr.toStdString();

我在命令行中执行了这个(在 Visual Studio 中可用),在 gdb 和 lldb 中工作。


0
投票

对于 Visual Studio 2013,我发现以下扩展仍然可以显示 QString,即使它不再受到官方支持:https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools

不确定 VS 2012 是否有等效版本;我在我们刚刚采用 VS 2013 时的一封旧电子邮件中发现了这一点,但我刚刚验证它仍然适用于 VS 2013 和 Qt 5.5.1。

© www.soinside.com 2019 - 2024. All rights reserved.