For memory views. In the dumper, create a cache of TypeInfo
structs to contain type information and print the new entries
in each call of bb().
Collect the information in the gdb engine.
Replace WatchData::origAddress by WatchData::ReferencingAddress
to be able to correctly handle automatically dereferenced
pointers of the gdb engine. Whereas 'address' of a automatically
dereferenced used to be that of the pointer, it is now that
of the dereferenced item matching the size reported, enabling
memory views. Referencing address is now the address of the pointer.
Reviewed-by: hjk
Move tooltip-request handling from DebuggerPlugin into
DebuggerToolTipManager.
Request tooltip only if position changed and close
standard tooltip on success.
Remove actions from debugger plugin as they are not directly usable.
Create additional actions in context menu.
Move some code around to find the current editor.
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.
This should save debugger round trips and crashes in the debugging
helpers.
Add respective option to debugging helper option page, defaulting to
true.On this occasion, make CDB detect shadowed variables correctly
and display them as "<shadowed n>" as does the Gdb engine by
reversing the direction in which
CdbSymbolGroupContext::populateINameIndexMap works.
Rubber-stamped-by: hjk <qtc-committer@nokia.com>
CDB can now handle sizeof(Class) and even expressions that
determine the offset of map node values (to some extent), may still
fail with templates). Format expressions accordingly, adapt
cached expressions.
Use gdbQuoteType depending on debugger type only.
Most important, do not evaluate each expression separately before
issuing the call, as ".call" can now do it on its own. Check for syntax
errors there and cache failing types as before.
..preparing recursive dumpers. Add recursive parser to
watchutils.cpp Use insertBulkData() within CDB, add sizeof()
information for some Qt containers in order to be able to
dump QList<QList<KnownType> > .
Split the concepts 'enabled' and 'editable' in the dumper output
Disable "<not in scope>" entries, also fix their type.
Fix glitch in type beautification for display
Find reason for failing bulk updates.
- std::set/map: Introduce templates to iterate the MSVC STL
implementation depending on type (since it inherits some
basic set_traits that depend on the key/value size.
- Retrieve types correctly in CDB (buffer too short for STL-types)
- Fix std::map in GDB broken by previous commit.
- Introduce a dumper version check in GDB/CDB.
- Make GDB parse sizes in initial dumper call as well
- Fix special sizes to work with namespaced Qt (watchutils)
- Make container dumper routines set "childnumchild" when known
in order to avoid roundtrips; avoid repeated invocations of
container.end().
- Completed dumper information in some places to avoid roundtrips.
- Extended QVariant helpers by dumpers for common GUI types
(rectangles, points, sizes, fonts, size policies).
- Introduced artificial QObjectChildList/QObjectProperty types to
be able to dump QObject children and properties without using
gdb expressions.
- Fixed dumping of Signal/Slot list to pass on correct types. Avoid
recursions if signal is connected to self.
- Replaced expressions by addresses in the dumpers to it make work
for CDB.
- Reworked dumper test program to have -a, making it usable for tests,
add further types.
- Gdb: Clear output buffer before calling dumpers, avoiding mixups
in case evaluation of expression fails.
- Fix the dumper parser used by CDB, do not be fooled by
"<synthetic>" addresses, etc.
- Pass on a "dumperVersion" in initial query.
- Fix extractTemplate() not to kill blanks in case there is no
blank after a comma, fix hardcoded types accordingly.
- Make niceType()'s regexps ignore blanks after commas, add
unsigned short as char_type and cache the mappings, making
them work for CDB.
- CDB: Parse map output of dumpers correctly, generally don't
confuse the parser by unknown keywords encountered when
parsing children, thus enabling simple QMap types.
- Make dumpInnerValueHelper output std::string types.
Make dumpers pass on more size information initially, namely the
various Q<>Pointers. Introduce enum for those special template types
whose size does not vary with the arguments (Q<>Pointer,
std::allocators...) to make it more easily extensible.
Pass on some common QMapNode<> sizes as well.
Introduce an expression cache to the common QtDumperHelper
class and make dumpers pass some common expression values
(value offsets of common QMapNode<> incarnations).
Make CDBDumperHelper use the expression cache.
Extend dumper tester.
Make debugger tooltip API more general, have the engines check the
correct file type, figure out the expression and context from the text
editor.
Put common functionality in watchutils.cpp. In the CDB engine, check
whether a tooltip expression is a known variable within the stack frame
context. If so, retrieve via symbol group or dumpers. Cache by function
and expression.
Reviewed-by: hjk <qtc-committer@nokia.com>