- Add routine for formatting edit values.
- Optionally store memory in SymbolGroupNode (along
with special info) to be able to re-use it for
edit values using a simple convenience class
MemoryHandle.
- Prototypically implement QString and QByteArray / Qt 5.
Task-number: QTCREATORBUG-8344
Change-Id: I6d2cac7a1e9ac48e94335142c41dc1bfb984c515
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Retrieve data of Qt types with unexported private classes
from memory.
- Dump new string members of Qt 5's QUrl
- Fix QDir (faulty offset).
- Implement QDateTime.
Change-Id: Ie0524a531cd0afb3b8e058c2a0a0bf9616078357
Reviewed-by: hjk <qthjk@ovi.com>
In MSVC2012, more bases classes for std::string
and containers were introduced whereas std::pair_base
was removed compared to MSVC2010.
Add a findMember() function to be able to skip base
classes when looking for a certain member to finally
fix this issue.
Introduce SymbolGroupValue::parent()/childCount()
and simplify the helpers using it.
Change-Id: I7a6aad5c07739ca9cbf350489acd6d03bd1865e8
Reviewed-by: hjk <qthjk@ovi.com>
- Fix watch expressions for array to at least point to the
initial element.
- Return the name (which is the initial expression for the watch
symbol group) as last resort if the evaluation fails to avoid
obtaining "(*) 0" as expression.
Task-number: QTCREATORBUG-7408
Change-Id: Ifdf5ba59f6e18527d98b869f6a273aed283bd7da
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Use watch encoding without quotes for non-ASCII output.
Use formats with quotes for recoded strings.
Extend char-pointer recoding to work for char-arrays as well
and restrict to char types. Split up and re-use when
outputting QByteArrays or std::[w]string.
Task-number: QTCREATORBUG-5667
Change-Id: If9748c2e375ee5ecb05d257410eba4012de1c3cf
Reviewed-on: http://codereview.qt.nokia.com/2747
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Introduce struct & routine to return address data for QStrings/
QByteArray of versions 4,5 and use that.
Change-Id: I0603d160561bd28ef13bf79739b44b8af439bd93
Reviewed-on: http://codereview.qt.nokia.com/1770
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Run in a loop over qtVersion =4,5 when detecting the Qt modules
(quick detection). Add version field for later evaluation in
dumpers.
Reformat comments.
Change-Id: Ia3005fccbb92b847a0f1feef99a53eb4c318246f
Reviewed-on: http://codereview.qt.nokia.com/313
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Assign to QString/QByteArray following gdbmacros.py
implementation (call resize if required, copy data into buffer).
Assign to std::[w]string only it has sufficient memory
(since std::string<>.resize cannot be called).
Dump by reading raw memory for further types for whose private
classes no symbolic information is available.
Also fix dumping for pointer values, taking CDB's pointer/value
duality into account.
QRegExp, QDir, whose private classes do not have symbolic
information, either. Create convenience routines for dumpers
accessing the raw memory of those private classes.
QFile/QFileInfo/QUrl:
For those types, there is no symbolic information for their *Private
classes. Poke around in raw memory do obtain some information.
Move readMemory-utilities around.
in stopped state. Add helper for executing calls
to ExtensionContext including recording of output in
OutputCallback. Extend symbol resolution to return addresses
as well since QApplication::widgetAt() is ambiguous and needs
to be called by address. Add 'widgetat' extension command
to return the widget.
- Move the 'current module' into the Node
- Split symbol group hierarchy into LocalsSymbolGroup
tied to frame/thread and a separate, scopeless
WatchesSymbolGroup
- Add infrastructure for removing symbols from a SymbolGroup,
doing the index bookkeeping.
- Add method to synchronize watches to WatchesSymbolGroup
(iname/name map).
- Introduce watches commands for adding and dumping.
- Extend locals command to get watches as well.
- Add a dummy 'ErrorSymbolGroupNode' to use in case
insertion fails.