一般来说,我喜欢QUrls,但是在代码中使用大量的QUrls来调试代码很难,我在调试中看不到实际的url字符串,我必须在代码中对toString进行一些调试调用。是否有可能在调试手表中显示它?
答案 0 :(得分:4)
我知道这已经过时了,但我自己偶然发现了这个问题并决定以某种方式解决它。至少可以说,解决方案是粗糙的,但它确实有效。
QUrl的问题在于它的所有内部都使用了pimpl,而在调试时你无法访问QUrlPrivate
的定义。一旦QUrl中的任何内容发生更改,此处的解决方案可能会中断,因为它基于QUrlPrivate
成员的偏移量。因此,如果在未来版本中出现任何问题,您可以调整偏移量,并且您会感觉很好。这是Qt 5.3.1的结论
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="QUrl">
<DisplayString Condition="reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 8)->d->size">{*reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 8)}://{*reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 20)}{*reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 24)}</DisplayString>
<DisplayString>{*reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 24)}</DisplayString>
<Expand>
<Item Name="[scheme]">*reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 8)</Item>
<Item Name="[host]">*reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 20)</Item>
<Item Name="[path]">*reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 24)</Item>
<Item Name="[query]">*reinterpret_cast<QString*>(reinterpret_cast<char*>(d) + 28)</Item>
</Expand>
</Type>
</AutoVisualizer>
只需将其保存到(例如):
%USERPROFILE%\My Documents\Visual Studio 2013\Visualizers\QUrl.natvis
希望它对某人有用。
修改强>
这假设您已安装其他Qt类型的natvis,尤其是QString
。
答案 1 :(得分:0)
看起来QT VS插件为VS 2012增加了漂亮的打印支持。 从here
获取您可以在see how QT does it上添加自己漂亮的图片。
natvis文件添加了这个功能。
**编辑** Qt的VS Addin附带的natvis文件仅声明QUrl但不添加打印它所需的natvis代码。感兴趣的用户可以修改此文件以添加QUrl查看功能。