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>
Mostly nullptr instead of 0, but also a few bits of collateral damage.
Change-Id: I921991272aca921dcdecf302dfff3716e79dfc24
Reviewed-by: David Schulz <david.schulz@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>
... and use the option to govern general QObject guts display.
This allows people to completely avoid the performance impact
of attempted QObject display and still makes the feature
more prominent for our favorite use case.
Change-Id: I1e53b6448f646ab7eea9168a3cd24c77769e6328
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>
Instead of describing icons via file name or in the themed icons case
via
a string that is a list of mask/color pairs, we have now a class for it.
Icons are now listed in per-plugin *icons.h headers.
RunControl::m_icon was The only place left where an icon property was in
fact a string. This patch changes that member to be a Utils::Icon.
Change-Id: Ibcfa8bb25e6d2e330c567ee7ccc0b97ead603177
Reviewed-by: Eike Ziller <eike.ziller@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>
Usually the same as the text() for use in menus, but with
different capitalization.
Also, restrict the QAbstractButton case to QCheckBox.
That's the only case where it is used.
Change-Id: Iaf87265a214891b83fa5604eb69290e2160c57f0
Reviewed-by: Eike Ziller <eike.ziller@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>
Forcing a reset was already done with cc4943a2 but that change
failed to change the default value.
Change-Id: I6bb61d0f5b303f021910a3ae523de2e523b7ca0c
Reviewed-by: Eike Ziller <eike.ziller@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>
Using them still bites often. Since we can't distinguish between
setups run first with Creator 3.1 (where the option was 'on'
by default) and people who actively selected that at another
time, reset for all. People _needing_ them can opt in again.
There won't be many, if at all.
Change-Id: I68c64d71f0c8ab4a3e6c73cc91481a7d3f9ef6b9
Reviewed-by: Eike Ziller <eike.ziller@digia.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>
Since it's easier to shrink columns nowadays (left click
on header section or somewhere in the empty space) this
might "feel" better than last time we tried.
This is an experiment for now, might get reverted before 3.2.
Task-number: QTCREATORBUG-9918
Change-Id: I379d9310e232a16c8b8ee3c6cb0d91746fd7553c
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 have many buttons that open the options dialog, and many of these use
different terms.
Change-Id: I073fe2a23569c6f4174a2fb6567359c89cb2427c
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Makes them easier discoverable and seems what at least VS people
expect.
Change-Id: Iebf61f4760da6077495a97e6333cc9e9d7816706
Reviewed-by: Eike Ziller <eike.ziller@digia.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>
This keeps biting us. The convenience for people for whom it
happens to work is outweighed by the pain for those who can't
even start debugging due to this by far.
Change-Id: I336eceb549aa440570c28871ebe1f601a93f4ff6
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>