Commit Graph

146 Commits

Author SHA1 Message Date
Eike Ziller
f3011f057c Merge remote-tracking branch 'origin/4.10'
Conflicts:
	src/plugins/debugger/cdb/cdbengine.cpp

Change-Id: Idcfd19292730d2b0e67816715f7aa2cc0eb71c48
2019-06-13 14:03:02 +02:00
hjk
ee68a4e7b4 Debugger: Remove unused declarations
Change-Id: Ib5d1b0346a52c465436306a9223e2aa554ae0801
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-06-12 13:23:51 +00:00
hjk
07f50c8dec Debugger: Use QElapsedTimer instead of QTime::elapsed()
Deprecation looming.

Change-Id: Ibafbac6fbe48d74ba7d88c22400d581e49e4e45d
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-06-12 13:23:24 +00:00
hjk
2942ae876c Debugger: Use Utils::CommandLine handling in CDB
Change-Id: I124f7eeee5eb5028fb3316f69144fdcdfe63bc4d
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-06-12 13:04:18 +00:00
David Schulz
613280bbe4 Debugger: Fix warn on release for CDB
Fixes: QTCREATORBUG-21328
Change-Id: I0dd09fa7df57d708aeb08e37d26d96031d28fb0c
Reviewed-by: hjk <hjk@qt.io>
2018-10-17 07:02:42 +00:00
hjk
fa96f73192 Debugger: Rework step{In,Out,Over} handling
Main menu action pass operation to current engine, everything else
is handled there.

Combine execute{Step,Next} and execute{Step,Next}I functions.
Implementation were mostly similar, in some cases unneeded
(the instruction-wise version e.g. for Python)

Drop GDB-isms 'step', 'next' in favor of 'step in' and 'step over'.

Change-Id: I232232bc7a67d9d297a74f1c81dc43be96787d34
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-10-16 10:34:31 +00:00
hjk
36b654567d Debugger: Finalize moving Operate by Instruction to engines
Fixes: QTCREATORBUG-21211
Fixes: QTCREATORBUG-21212
Change-Id: I6c0259052336f2141462157c319abeaec9a1e483
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-10-05 12:54:44 +00:00
hjk
9f9c72302f Debugger: Streamline ThreadHandler
- Use the TreeItem/data pattern recently introduced with Breakpoints
  to remove the need of keeping track of id/object mapping. Opens
  possibility to have thread groups as intermediate level.
- Use the ThreadHandler directly as model for the thread combobox
  to remove the need of manual combo box updates.
- Move setting current thread from individual engines to central code.

Change-Id: I030e21a4aa5ab30b0efbc84528d9cecf29cbbe30
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-08-21 07:25:57 +00:00
hjk
3b5ecac238 Debugger: Make most views per-engine instead of singletons
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>
2018-08-17 12:35:15 +00:00
Alessandro Portale
0558db7b54 Debugger: Modernize
modernize-use-auto
modernize-use-nullptr
modernize-use-override
modernize-use-using
modernize-use-default-member-init
modernize-use-equals-default

Change-Id: I91a6874f0d7b94e9079ab4ef07c23c60c80be9c0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2018-07-25 12:52:43 +00:00
David Schulz
48850dfa4d Debugger: add callback for interrupt inferior
This allows to run any command without knowing the current state of the
debugger engine. Replacing the old special stop mode for any command
that may be triggered while the engine is running, with a check in
runCommand. If the engine is running while a command is triggered a
callback is added to the interrupt that will execute the command as soon
as the engine is accessible again.

Change-Id: I8bb1914b92da2b03e76c2c2ec8293d13041c72fd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-07-23 13:17:47 +00:00
hjk
94d41afade Debugger: Move cpp snapshot storage to cdbengine
It's the only one using it.

Change-Id: I95dc4918c82653710a47cb8d0043bb3241e954ac
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-05-28 07:36:32 +00:00
hjk
8f1a161c64 Debugger: Merge EngineSetup and InferiorSetup start phases
It was needed in the past to trigger e.g. gdbserver setup in
remote cases which is nowadays handled by separate RunWorkers.

Change-Id: I30bce071dab0779cce2e7abef7b31550d8539461
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-12-06 13:30:04 +00:00
hjk
d3c1dfe45a Debugger: Consolidate CdbEngine::startEngine()
Change-Id: I92c74b96c891bb46b7ceb9c45ffea268a223b325
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-10-13 12:32:20 +00:00
hjk
1a1c9bf828 Debugger: Use shared TerminalRunner also for CDB
Change-Id: I2dd9b16f5699d0551a2de3e8ebefc865b98ad862
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-10-13 12:31:31 +00:00
hjk
d0e419e02b Debugger: Move some CdbEngine member initialization
More concise.

Change-Id: I28ac441cacfceef1ad5622f15fecac1d2cca9395
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-10-05 08:20:41 +00:00
hjk
526e217ce9 Debugger: Centralize abort handling
... and apply even more force on the second trying by forcing
ramp down of the runControl itself instead of hoping that it
would pick up hints.

Change-Id: I9d0f4130cb9a137b91c9fa81c3d255f236f98be0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-09-21 12:46:13 +00:00
hjk
1f6764a54e Debugger: Move run parameters from engine to tool runner
The parameters belong to the run control, they should not
be triplicated in case of a combined engine.

Change-Id: I4dd84220edbd7a44b902cc52627fe01d0568db75
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-18 07:05:09 +00:00
David Schulz
17485c0678 Debugger: Optimize python output handling
Change-Id: Ia97e8adaabbffe49acec44575621a4f4243c5cea
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-10 07:07:38 +00:00
David Schulz
a83d539551 Cdb: Introduce interface for python dumpers
Change-Id: I0ef2fd8a44232d65b0d772fd6c65230266d586a8
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-10-07 06:40:20 +00:00
hjk
6e925910b4 Debugger/BinEditor: Standardize interface
Change-Id: I4acf6bc7648e57c564e86023176ae3905a293a99
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-07-21 06:20:52 +00:00
Orgad Shaneh
7d31cb0e18 Debugger: De-slot
Most Qt4 connects are gone.

Change-Id: Ie74cfb11fc4b4c531f9e22c95a4d18336e1c29e8
Reviewed-by: hjk <hjk@theqtcompany.com>
2016-06-28 06:20:21 +00:00
hjk
1284e95295 Debugger: Fix QByteArray/QString overload mixup
And take the opportunity to sprinkle more 'override' over the code.

Change-Id: I8b6b80653ca671e7681b7de2de5ad4288b281ccf
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-06-14 06:25:50 +00:00
hjk
726b907cc3 Debugger: Remove debuggerstringutils.h
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>
2016-06-09 08:09:46 +00:00
hjk
39a38d5679 Wholesale conversion to #pragma once
Kudos to cgmb and https://github.com/cgmb/guardonce

Change-Id: Ifa8970734b8d43fd08c9260c645bdb0228633791
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-03-30 15:20:19 +00:00
David Schulz
c1ad70087d Debugger: Remove verbose option of the debugger log.
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>
2016-03-18 07:45:36 +00:00
Tobias Hunger
397e7f4843 Update License according to agreement with Free Qt Foundation
* Update files in src/plugins

Change-Id: Ia5d77fad7d19d4bb3498e78661982f68729adb22
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-01-19 15:57:01 +00:00
hjk
2b16b97f19 Debugger: Make DebuggerEngine::runCommand() virtual.
Allows default implementation of e.g. stack retrieval in the base
class.

Change-Id: I96460b19aa31347b2c863736b4ce2b5046eb4de6
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2015-11-04 11:48:05 +00:00
hjk
0095953e22 Debugger: Make CDB DebuggerCommand handling more similar to LLDB
Change-Id: Ib0ea7e95e2744f521cf369bd03d3d88ee2578cb2
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2015-09-11 08:01:27 +00:00
David Schulz
03be835b2d Cdb: Replace CdbCommand with DebuggerCommand.
Change-Id: Ie4d4d17c01d54cfdb5957138076a45bb7a9f5455
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-28 10:54:49 +00:00
David Schulz
2763704bee Cdb: Store pending commands in an Hash.
Use the command token as the key. Simplifies the CdbCommand,
because the command token doesn't need to be stored in the class.

Change-Id: Ic43ba16529db6e11ce00db1db49b384a627a4941
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-28 10:54:45 +00:00
David Schulz
d582b73a64 Cdb: Unify builtin and extension command queue.
Change-Id: I2dd85201cbab9095987be61146a16d516bfd114f
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-28 10:54:41 +00:00
David Schulz
845ee6a61d Cdb: Replace CdbResponse with DebuggerResponse.
Change-Id: I2fddd5904de665bc7e6731ee4be69639d82258a0
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-28 10:54:38 +00:00
David Schulz
be8290eefb Cdb: Simplify storing split cdb replies.
Change-Id: Ia50b9255c0da70b8c473349ab2a6b6f3d88e01ed
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-28 10:54:34 +00:00
David Schulz
0aa4339353 Cdb: Remove the command from the response.
It was just used for diagnostic messages. The commands
can still be identified via the token in the messages.

Change-Id: If1c6f9e66bd65d9d3a16cb403d297c83b0c52d0e
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-27 08:12:27 +00:00
David Schulz
9e800bc0af Cdb: Pass the breakpoint id to the command handler.
This way the id doesn't have to be parsed from the command.

Change-Id: I8beb15c6d98a6628f373cf44b724dd4267efb728
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-27 08:12:22 +00:00
David Schulz
6633bc9927 Cdb: Remove command sequences.
Simplify the CdbResponse to become more like the DebuggerResponse.

Change-Id: Ifdd7c69e340b4c18c0e1187eb2173979feccd5b9
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-27 08:12:15 +00:00
David Schulz
56a46bbcda Cdb: Print out user debugger commands to the log.
This also removes the need for a command flag.

Change-Id: I6ad8a2c5d49673783cf06a2612c33e0cd5555706
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-08-25 11:27:15 +00:00
Christian Kandeler
2cf01ae446 Debugger: Add "override" modifier.
Fixes an enormous amount of clang warnings.
Also remove the "virtual" keyword from these functions, as per our
coding style.

Change-Id: I4c8a75504e20d8fe827304a9fe362e9b64847b8a
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-08-17 13:35:00 +00:00
David Schulz
2ce11e0b5a Cdb: Unify local and watch handling.
Change-Id: Ic997136cc3b67b9f146e56d0b3ee2cb3140b6b10
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-06-15 12:58:28 +00:00
David Schulz
ec83581d16 Cdb: Update locals via doUpdateLocals form DebuggerEngine.
Change-Id: I2178e4d787a4d6811bbe5c6baddd23013954e53f
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-06-11 13:00:16 +00:00
hjk
277495e8cb Debugger: Remove the boolean parameter to CdbEngine::updateLocals()
Makes clang happy, and changes to a full update after manual
variable assignments, which is intended anyway.

Change-Id: I028f32e1ac9014f5d56bf12824624f7685d22c83
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2015-06-11 09:28:51 +00:00
hjk
5309e217e4 Debugger: Consolidate GDB and LLDB "updateLocals" code paths
This splits the bool setToolTipExpression() operation into
a bool canHandleToolTip(), and the actual processing of
the request, which is mostly identical to the handling of
a watcher.

Handling a watcher is now mostly the same as a full Locals
update, except for the 'partial' flag. Pushing the handling
of that down to the bridges gives identical code paths
in the gdb and lldbengine. Move that to the
DebuggerEngine base class.

Change-Id: I3861b43e8630c7e7bd57fcd549b2a2387e3d4869
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-06-10 07:40:27 +00:00
David Schulz
20d5c1a826 Cdbext: Add option to return alphabetically sorted locals.
Change-Id: Ida0e8aec41bade10ad1e3ac517812a3a8c120473
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-06-05 06:16:51 +00:00
hjk
244cdb7804 Debugger: Split off runtime-only items from DebuggerStartParameters
Right now, DebuggerStartParameter is part of the debugger plugin
external interface. Better not make it fatter than necessary.

Change-Id: I3b9205089f971dd314ccba1335b5ca2d4d9fe7c6
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2015-05-28 08:54:48 +00:00
David Schulz
e4e9983622 CDB: Unify handling of stopped debugger process.
Task-number: QTCREATORBUG-14344
Change-Id: Id05b16e649d39e354e6fda9ede9aa44984f3f429
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-04-28 07:00:52 +00:00
hjk
b3f88df41d Debugger: Remove most remaining occurrences of WatchData
... in WatchHandler and DebuggerEngine interface.
Adjust using code.

Change-Id: I6371f3e96ba46a783e23a5767cdde24a10d3fce7
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-03-20 08:36:57 +00:00
David Schulz
9c5a56a38b Cdb: Reduce usage of deprecated WatchData.
Change-Id: Ie3d3355e51761cea7e0284bbb3e0177d5a443f36
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-03-13 09:01:15 +00:00
hjk
31b2ac85f4 Debugger: Split CdbCommand into CdbCommand and CdbResponse
Move it closer to the GDB/LLDB setup.

Change-Id: Ifcada93ba9abff56c5523963c3ef9382277387e2
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2015-03-10 09:30:15 +00:00
hjk
159f4e4f39 Debugger: Replace LocalsUpdateForNewFrame enum value by a bool
Change-Id: I4e7f6ec14a4c40a7d402e6a57f1b14fc37651747
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-03-09 15:17:56 +00:00