IDE Debug Helpers: Difference between revisions
DavidFaure (talk | contribs) (adjust path and formulas, but this is missing information on how to make autoexp.dat actually used in 10.0...) |
m (Fix KDevelop link) |
||
Line 11: | Line 11: | ||
There is an effort to introspect Qt types using LLDB at https://bitbucket.org/lukeworth/lldb-qt-formatters. | There is an effort to introspect Qt types using LLDB at https://bitbucket.org/lukeworth/lldb-qt-formatters. | ||
KDevelop ships formatter scripts in its LLDB plugin for Qt types that can be used directly in plain LLDB. https://unlimitedcodeworks.xyz/blog/2016/08/ | KDevelop ships formatter scripts in its LLDB plugin for Qt types that can be used directly in plain LLDB. https://unlimitedcodeworks.xyz/blog/2016/08/20/gsoc-kdevelop-lldb-final-report/#using-data-formatter-scripts-outside-kdevelop | ||
== MS visual studio QString & QByteArray expansions == | == MS visual studio QString & QByteArray expansions == |
Revision as of 19:17, 5 December 2016
Qt Creator
Qt Creator directly supports introspection of all Qt Containers and QObject derived classes for Qt 4 and Qt 5. User defined types can be supported in addition, see the Qt Creator documentation for details.
LLDB
There is an effort to introspect Qt types using LLDB at https://bitbucket.org/lukeworth/lldb-qt-formatters.
KDevelop ships formatter scripts in its LLDB plugin for Qt types that can be used directly in plain LLDB. https://unlimitedcodeworks.xyz/blog/2016/08/20/gsoc-kdevelop-lldb-final-report/#using-data-formatter-scripts-outside-kdevelop
MS visual studio QString & QByteArray expansions
The new layout of QString in Qt 5 is hard to inspect using the debugger. The following code can be added to autoexp.dat (c:\program files(x86)\visual studio 9.0\common7\packages\debugger\autoexp.dat) You should add it to the [Visualizer] section, before the STL/ATL containers.
; Qt types
QStringData{
preview ([(unsigned short*)$e.d + $e.offset,su])
stringview ([(unsigned short*)$e.d + $e.offset,sub])
}
QString{
preview ([$e.d])
}
QByteArrayData{
preview ([(unsigned char*)$e.d + $e.offset,s])
stringview ([(unsigned char*)$e.d + $e.offset,sb])
}
QByteArray{
preview ([$e.d])
}
If all else fails you can always just add a watcher for
(char*)str.d + str.d->offset,su
in the debugger, to see the contents of str.
MS Visual Studio 2012
There is a new way to visualize native type, see http://code.msdn.microsoft.com/Writing-type-visualizers-2eae77a2 for details.
Ready-made .natvis files are included in the Visual Studio add-in.
So we can visualize QString and some other types using qt5.natvis file (save to file: %USERPROFILE%\Documents\Visual Studio 2012\Visualizers\qt5.natvis)
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer >
<Type Name="QString">
<DisplayString>{(char*)d + d->offset,su}</DisplayString>
</Type>
<Type Name="QtPrivate::RefCount">
<DisplayString>{atomic}</DisplayString>
</Type>
<Type Name="QBasicAtomicInteger<int>">
<DisplayString>{_q_value}</DisplayString>
</Type>
<Type Name="QTypedArrayData<'''>">
<DisplayString>{{Count = {size}}}</DisplayString>
<Expand>
<Item Name="[size]">size</Item>
<ArrayItems>
<Size>size</Size>
<ValuePointer>(iterator) ((char''')this + offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QByteArray">
<DisplayString>{*d}</DisplayString>
</Type>
<!— More Qt5 types… —>
</AutoVisualizer>
MS Visual Studio 2013
The ".natvis" files introduced in MSVS2012 received some additional attention in MSVS2013: