Make use of recent TreeModel improvements in various
tool views, push more operations into the engine-
owned data models, specifically context menu creation.
Change-Id: I479c97102b9fb81611c6461c6df1cec59295179a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Saves a couple of static_casts on the user side.
Change-Id: Ib8f70046ae40539813c01e3ff7d790bf7a170bee
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
With QT_RESTRICTED_CAST_FROM_ASCII making GdbMi etc operate on
QString is feasible again. Take this as opportunity to move
debugger encoding handling closer to a 'conversion on input and
output if needed, storage in QString only' scheme.
Change-Id: I2f10c9fa8a6c62c44f4e6682efe3769e9fba30f7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
The Tooltip was talking about bits 0..8, 8..16 etc - that is
one bit too many.
Change-Id: If97217561cd9cf0d32c44c7ceaa4bb50d0be4f31
Reviewed-by: hjk <hjk@theqtcompany.com>
GDB does not report register sizes using the MI protocol, so sizes were
infered from the register name. This is fragile, better use
"maintenance print raw-registers" which reports the sizes and even
if not part of the official interface, is unlikely to change.
Change-Id: If7c7182751a496084a351aaef3a97dcdac6c500b
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Right-align subregister values, drop the 0x prefix for hex values,
add a subitem with ASCII representation and tooltips for subitems.
Change-Id: I6a5764fa5ef8b2bfd916cdd828d949a82304503d
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Inherit value validity from parent; the 'unknown' default
leads to a wrong [inaccessible] display otherwise.
Change-Id: I6ad23b5c3583c3c8fb5cbaa799d7629ff79328ed
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
The previous display as 0, or 0x0...0e (LLDB on Linux) was
less useful.
Change-Id: I820ea5ef427b65633471c7c62e44851fcfd637cd
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Full separation does not seem possible as QTreeView assumes
all items to have equal column count.
Change-Id: Ia260924fe13ea62789923af8484f9838295355b6
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Use register names as handle, not their index in the view.
Store the raw real values, not some stringified version
as primary data. Use subentries to break down bigger
registers into smaller entities. Also remember the
previous value of a register and show it in a tooltip.
Change-Id: I8ae3cc8766a7b211bc7cc827c734e5cf6060825c
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
-1 is not a valid unsigned value.
registerhandler.cpp(354): warning #68: integer conversion resulted in a change of sign
return createIndex(row, col, TopLevelId);
^
Change-Id: I41935255704f19724d6cec16ea470e2f8f8a16a1
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
In several places, it says '#include "..."' for headers
from different libraries/plugins.
Change-Id: I96cd74fef9b30163adefe3e1720e0847bed9553a
Reviewed-by: hjk <hjk121@nokiamail.com>
QAbstractItemModel::internalId() returns a quintptr in Qt 5. Handle this
in a way compatible with both Qt 4 and Qt 5.
Change-Id: Iacb9ab71e95085f061fac1e3f4e4759ed43ca7ef
Reviewed-by: hjk <qthjk@ovi.com>
Change-Id: Ie49bdf576a6d3543aef6df133b27c8827775c935
Rationale:
a) It is conceptually cleaner to do the changes to the model
in between calls to beginResetModel() and endResetModel,
respectively.
b) The function is deprecated in Qt 5, for exactly that reason.
Reviewed-by: hjk <qthjk@ovi.com>
By source - latin1 is really expected as there is no any check
or usage of QTextCodec::setCodecForCStrings() currently.
QString::fromAscii() might break 'Latin1' input in some cases.
A quote from documentation about QString::fromAscii():
"Note that, despite the name, this function actually uses the
codec defined by QTextCodec::setCodecForCStrings() to convert str
to Unicode. Depending on the codec, it may not accept valid
US-ASCII (ANSI X3.4-1986) input. If no codec has been set, this
function does the same as fromLatin1()."
Change-Id: I49cf047ca674d2ec621b517c635d1927bb2e796f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: hjk <qthjk@ovi.com>
(except gdbmi.cpp, name_demangler.cpp). Remove some unneeded
conversions, change some maps to take QByteArray keys.
Change-Id: I010f1251998a441fe5c8c87901b1e0c277c0391c
Reviewed-by: hjk <qthjk@ovi.com>
Add a separate memory view tool window available
from the context menus of:
Locals view:
If the debugger provides size information, colors the
areas of member variables for inspecting class layouts.
Registers view:
Tracks the area pointed to by a register.
The view has a context menu allowing to open subviews
referenced by the pointer at the location using
the toolchain abi's word with/endianness.
Rubber-stamped-by: hjk
assignValueInDebugger: Pass on WatchData as well, pass
on values as QVariant. Based on that, do more extensive
checks in CDB, preventing assignment of non-PODs.
Locals/Watch editing:
* Disable while running
* Edit pointer values as hex with validation.
CDB: Strip class types off reported pointer values and reformat
the values as short 0x-pointer values, introduce flag to
WatchData::source to do dumper expansion handling.
Windows: recognize int64 as int.
Register handler: Fix accessing uninitialized value.
Create delegate widgets with validation for bool/int/float
types, using a QVariant-type modelData property.
Also fix register editing to be validated for quint64 values
and editing longer values as hex bigints. Anything else is not
editable.