This is a step towards properly supporting multiple debugger
sessions side-by-side.
The combined C++-and-QML engine has been removed, instead a
combined setup creates now two individual engines, under a single
DebuggerRunTool but mostly independent with no combined state
machine. This requires a few more clicks in some cases, but
makes it easier to direct e.g. interrupt requests to the
interesting engine.
Care has been taken to not change the UX of the single debugger
session use case if possible. The fat debug button operates
as-before in that case, i.e. switches to Interrupt if the
single active runconfiguration runs in the debugger etc.
Most views are made per-engine, running an engine creates
a new Perspective, which is destroyed when the run control dies.
The snapshot view remains global and becomes primary source
of information on a "current engine" that receives all menu
and otherwise global input.
There is a new global "Breakpoint Preset" view containing
all "static" breakpoint data. When an engine starts up it
"claims" breakpoint it believes it can handle, but operates
on a copy of the static data. The markers of the static
version are suppressed as long as an engine controls a
breakpoint (that inclusive all resolved locations), but are
re-instatet once the engine quits.
The old Breakpoint class that already contained this split
per-instance was split into a new Breakpoint and a
GlobalBreakpoint class, with a per-engine model for Breakpoints,
and a singleton model containing GlobalBreakpoints.
There is a new CppDebuggerEngine intermediate level serving as
base for C++ (or, rather, "compiled") binary debugging, i.e.
{Gdb,Lldb,Cdb}Engine, taking over bits of the current DebuggerEngine
base that are not applicable to non-binary debuggers.
Change-Id: I9994f4c188379b4aee0c4f379edd4759fbb0bd43
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
This was GDB-only. It complicates the startup mechanism including breaking
certain setups (e.g. users manually controlling "set auto-solib-add" in
their .gdbinit) without providing too much benefit (anymore).
Part of the potential debugger startup time improvements that were
possibly gained by the feature are nowadays available by using a
release build *without* debug info, as one of the original reasons
to not use that (making Qt type introspection hard/impossible)
is largely gone with 4.2+.
Change-Id: Iffb34e0035f39ad74b24bf025749b546f25a489b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
A preliminary step to debugger options reorganization.
Change-Id: Iac77d87acfe246eff3f5734bcf35e35c2d6909c1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Saves an asking for debugger log roundtrip when the information is just
visible in the verbose log. Was just used inside the cdbengine.
Change-Id: I9801d3ccd8f273c3b4afcf053b00e7af0953a63f
Reviewed-by: hjk <hjk@theqtcompany.com>
... and switch it off by default. The feature has indeterministic
performance impact and lost quite a bit of its utility since GDB
learned to extract dynamic object types most of the times.
Change-Id: I22cccb03ba67f9ff6ad757bbc06eb372d84bbffe
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
- Remove old experimental native mixed approach.
- Move some common stack parsing to Stackhandler.
- Mark gdbbridge.py debug output explicitly to remove it
from actual reponse handling
New native mixed needs QtDeclarative changes and
QTC_DEBUGGER_NATIVE_MIXED=1 for now.
Change-Id: I09eed1da51cea878636d36756015b7bfaed34203
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
The feature has been actually been disabled since commit ac771eb552,
but now it's time to also remove the dead code ...
Fixing the feature and bringing it out of the experimental state
would require quite some effort that apparently nobody is willing
to spend. So it's better to remove it.
The enablers in the qmldebug library, as well as the QmlJSDelta utility
class in qmljs library, are left in though.
Change-Id: Idf98a2f946d0db86bef2f20d2349d6ffedba219c
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
This paves the the way to mixed QML/C++ debugging
through the native backends. Currently this requires
QTC_DEBUGGER_NATIVE_MIXED to be set in the environment.
Change-Id: I126ad945e84806f3b548408318007351628c912f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
The usual case is probably to want normal editors stay open,
but memory/diassembler removed, but all other combinations
may be useful at times. So use two options instead of one.
Change-Id: I58c3951cc507c7e66a8d7a65b459a036e6a5d801
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This is useful when there are multiple build machines with different
path, and the user would like to match anything up to some known
directory to his local project (variable support will also be useful -
will try to add that later).
Syntax: (/home/.*)/KnownSubdir -> /home/my/project
Capture group will be replaced by the value.
In this example the substitute path will be (in case a source string
found such as /home/SomeUser/SomeProject/KnownSubdir/foo.cpp):
/home/SomeUser/SomeProject -> /home/my/project
Change-Id: I19d03c9388161d8456a86676086dcb06dc3d7370
Reviewed-by: hjk <hjk121@nokiamail.com>
Instead of requiring the user to add the required python
code to load them manually let him specify a file directly.
This also makes the feature accessible to LLDB which needs
a slightly different syntax.
Task-number: QTCREATORBUG-12492
Change-Id: I12621b1cea2429476b0865bcbcb739a238dcf6af
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Turns out setting the column resize mode on the view itself
is counter-productive as it takes away the ability to
manually re-adjust.
So set the mode only temporarily to get the preferred width
than switch back to manually resize mode and use the hint
to set some initial size. Also use the length of the header
label as absolute minimum.
Change-Id: Ic17e31334b23ce6d541f9459cd22be65145046d3
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
There are two values now, one to limit an entry in the L&E view
(default 100) and a hard upper limit (at 1 mio).
If displayed values are elided, the true length is shown in addition.
Change-Id: I180b70446c18e258c164e5af75b88d4c8b6c53f2
Reviewed-by: hjk <hjk121@nokiamail.com>
Added an option to change the behavior of the debuggercore so that
the current editor isn't always centered on the current line, to stop
unnecessary jumping of the code.
Change-Id: I9406df518bb1b977e39a0265ee7fd6fae2069ed9
Reviewed-by: hjk <hjk121@nokiamail.com>
We need to distiguish between start of GDB itself (a.k.a .gdbinit-style
customization) and after the dumper machinery is initialized, which is
nowadays often delayed until the first stop hook.
Change-Id: I40f1e7225c2043b8bcb7d50eef948bb3c9162bb6
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
This enables the use "official gdb"-styly pretty printers from
within Creator. In case there are both variants, Creator-style
pretty printers are preferred.
Change-Id: Iaa178d922dae4eaa1943e9d5b960a666f80fe4db
Reviewed-by: hjk <hjk121@nokiamail.com>
Merge QmlJSInspector plugin into the debugger. Also merge the
extra Inspector window with the Locals & Watchers: It now shows
the QML object tree in the running state.
Change-Id: I59ae0c1b970a48ba10ecda92ed3ba765d94b1d9c
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
Win64 doesn't seem to have raise() at all, or at least it isn't
called on abort()
Change-Id: Ief7a97c321db0f91629848852719977d14094173
Reviewed-by: hjk <qthjk@ovi.com>
This prevents initial reading of debug information when no
breakpoints are set. The debug information will be read on
first stop instead, e.g. when the user interrupts.
Change-Id: I6156347bf108e9ed89f54ca67021f37c02fa5116
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>