The local variable output of unsigned __int64 differ between 6.11
and 6.2
6.11: 0x222`23456789
6.2: 0x00000222`23456789
So we must iterate over the value to find and remove the 64bit separator
(`) instead of just expect it at the 10th character.
Change-Id: I8017c83707b29fa0a510bf621e57e9da6895b63a
Reviewed-by: hjk <hjk121@nokiamail.com>
QDoc does some magic with the \class and \namespaces
and \brief commands, so the following wording must be used:
"The xxx class yyy ..."
Change-Id: Id231f30e8464898b776888d5423523de404aae34
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Now 'address' always refers to the address of the object or
field mentioned in a WatchItem whereas 'origaddr' is
optionally used for the address of the pointer (not its
value) pointing to the object/field in case of "autoderef"
pointers.
Change-Id: I718eb13e6147dafca016c85db6c8b31c631cc764
Reviewed-by: hjk <hjk121@nokiamail.com>
The \i and \o commands were replaced with \li and
\bold was replaced with \b in QDoc for Qt 5.
The \input command was replaced with \include in the docs.
Change-Id: I257d1bebb8ebc739ca20e0d29fcf0406ecb14534
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
#!/usr/bin/env ruby
Dir.glob('**/*.cpp') { |file|
# skip ast (excluding paste, astpath, and canv'ast'imer)
next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
s = File.read(file)
next if s.include?('qlalr')
orig = s.dup
s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
res = $&
if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
res
else
res.gsub!('} else', 'else')
res.gsub!(/\n +} *\n/m, "\n")
res.gsub(/ *{$/, '')
end
}
s.gsub!(/ *$/, '')
File.open(file, 'wb').write(s) if s != orig
}
Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
- 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>
Use 'origaddr' as gdb does. Do not append address to watch value
if it is already contained in the value.
Fixes the currently grayed-out 'Open memory editor at referenced
address'.
Change-Id: I6f7cf5b7984f93606ad4bb0872348f51c73f9117
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>
Collapse pointer-type items in watch symbol group when updating.
Task-number: QTCREATORBUG-5652
Change-Id: I077120c7352da5bc330bb000786a50432bb47738
Reviewed-on: http://codereview.qt.nokia.com/2424
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).
Pass data in binary form in case of unprintable characters
such that watchmodel reformatting can be used (instead of
appending a hex dump in the extension).
- 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.
and QVariant-containers. Add infrastructure to pass information
from simple to complex dumpers (cached additional nodes) and for
non-container type complex dumpers.
- Do not report start-up trap as stop reason should one trigger
while stepping.
- Set current frame to first usable frame, avoiding disassembly
while stepping
- Kill process in case of forced shutdown with pending (long)
commands.
- SymbolGroupValue: Do a quick check for accessible values
and mark failure as 'invalid'.
- Introduce flag indicating existence of simple dumpers to types.
Introduce node hierarchy and move nodes to a separate file.
Introduce reference nodes that point to additional symbols and
symbols within the symbol tree (make deeply nested linked list
elements visible as array elements). Properly name container
elements as array elements 0..n. Fix pre-expansion of complex
dumpers.