我使用 Visual Studio 2012 和 Qt4.8.5,不幸的是,当我在调试模式下工作时,我看不到 QString 文本变量。有人有小费允许吗? VS2012 不存在 Qt4.8.5 插件。
非常感谢
泽维尔
有一个快速且明确的解决方案(MSVC 原生,不需要插件,也不需要设置 .dat 文件),从这里查看我的答案
假设您有
QString str
(Qt4),然后添加到调试器监视窗口:
((str).d)->array,su
附录
,su
告诉调试器将数据解释为 unicode 和以 null 结尾的字符串。
注意:对于 Qt5
QString str
可能是
(char*)str.d + str.d->offset,su
除非将调试器选项设置为“启用本机编辑并继续”,否则不会使用 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 >= 0" Name="[size]">d->size</Item>
<Item Condition="d->size > 0" Name="[referenced]">d->ref._q_value</Item>
<ArrayItems Condition="d->size<=25">
<Size>d->size</Size>
<ValuePointer>d->data,c</ValuePointer>
</ArrayItems>
<ArrayItems Condition="d->size>25">
<Size>25</Size>
<ValuePointer>d->data,c</ValuePointer>
</ArrayItems>
<Item Condition="d->size>25" Name="...">d->size - 25</Item>
</Expand>
</Type>
至少 qt4.natvis 可以与 qt5.natvis 共存,因为其中一个无法正确加载......
对于视觉 2015、2017 和 2019,
只需安装 Visual 专用的 Qt 插件即可。
从这里下载
对于我来说,在 Qt5 和 Visual Studio 2012 中,我只是这样做了:
项目选项 -> 调试 -> 调试器类型 -> 将其设置为 从 Auto 到 Mixed。
手表中不显示字符串。
对于 Visual Studio 2015...
工具 > 选项 > 调试 > 常规 > 选中“使用本机兼容模式”
对我来说,这适用于 QString qStr :
p qStr.toStdString();
我在命令行中执行了这个(在 Visual Studio 中可用),在 gdb 和 lldb 中工作。
对于 Visual Studio 2013,我发现以下扩展仍然可以显示 QString,即使它不再受到官方支持:https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools
不确定 VS 2012 是否有等效版本;我在我们刚刚采用 VS 2013 时的一封旧电子邮件中发现了这一点,但我刚刚验证它仍然适用于 VS 2013 和 Qt 5.5.1。