summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/qml/qmlengine.h
Commit message (Collapse)AuthorAgeFilesLines
* Debugger: Use more FilePath in source file handlinghjk2023-03-151-1/+1
| | | | | | | | | | Needed for the double-remote case. With this we have proper breakpoint markers in the text editor for a remotely running gdb on a remotely loaded project. Change-Id: If80e4a4108a4a0bcdd7612a59e2bd695213f5ea5 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* Debugger: Use more FilePaths in module handling interfacehjk2023-03-141-2/+2
| | | | | | Change-Id: Ie058b928900015d0f71776151547bf7ba32a62bf Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* Remove GPL-3.0+ from license identifiersKai Köhne2023-01-061-1/+1
| | | | | | | | | | | | | | | Since we also license under GPL-3.0 WITH Qt-GPL-exception-1.0, this applies only to a hypothetical newer version of GPL, that doesn't exist yet. If such a version emerges, we can still decide to relicense... While at it, replace (deprecated) GPL-3.0 with more explicit GPL-3.0-only Change was done by running find . -type f -exec perl -pi -e "s/LicenseRef-Qt-Commercial OR GPL-3.0\+ OR GPL-3.0 WITH Qt-GPL-exception-1.0/LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0/g" {} \; Change-Id: I5097e6ce8d10233993ee30d7e25120e2659eb10b Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Use SPDX license identifiersLucie Gérard2022-08-261-24/+2
| | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Task-number: QTBUG-67283 Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Debugger: Convert to Tr::trhjk2022-07-081-6/+2
| | | | | Change-Id: I5d2475c790851c68f9997ac6af72b5eaca58482d Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Debugger: Use QtcProcess instead of ApplicationLauncherhjk2022-05-041-3/+2
| | | | | | | ... to start the QmlEngine Change-Id: Id283a1f5d100cd65fe1f3b900114b86aca288e91 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Debugger: Drop base DebuggerEngine::runEngine()hjk2021-01-051-1/+0
| | | | | | | | | | The lines between engine setup and running have always been blurry, so it looks more and more unnatural to enforce this in the architecture. Remove the runEngine() call from the end of notifySetupEngineOk, and do it on the user side. Change-Id: I3a5e158e8b3fe9b0a288d064f798e24b2ac47f86 Reviewed-by: David Schulz <david.schulz@qt.io>
* Debugger: Move toFileInProject to QmlEnginehjk2019-09-021-0/+1
| | | | | | | The only user. Change-Id: I443cbfab20739fb43a45848355110f879b0f3041 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Debugger: Rework step{In,Out,Over} handlinghjk2018-10-161-4/+2
| | | | | | | | | | | | | | | 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>
* Debugger: Streamline ThreadHandlerhjk2018-08-211-1/+1
| | | | | | | | | | | | - 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>
* Debugger: Make most views per-engine instead of singletonshjk2018-08-171-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Debugger: Remove unused DebuggerEngine::isSynchronoushjk2018-07-241-1/+0
| | | | | Change-Id: Ia1eb3a65fabbf966a1766d68456144fd9e093ae8 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Debugger: Merge EngineSetup and InferiorSetup start phaseshjk2017-12-061-1/+0
| | | | | | | | | 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>
* Debugger: Simplify QmlEngine constructionhjk2017-10-041-1/+1
| | | | | Change-Id: Id237998cf2d9a03f9c2929043fdb45ac49d4addb Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Debugger: Don't wait for app output for Qml debugger port retrievalhjk2017-08-181-4/+2
| | | | | | | We know the port in advance nowadays. Change-Id: Iacd6f2c8ef04665606a77625be77744a358bb560 Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
* Debugger: Remove remote setup sub-statemachineryhjk2017-06-221-3/+0
| | | | | | | | Not needed anymore in the world of RunWorkers. Change-Id: Id7fb24fece6acb03de12f2677dd99a05c513e7a4 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
* Debugger: Fix QmlInspector state update connectionhjk2017-05-191-0/+2
| | | | | Change-Id: I1693d593ec08c14c48b2c2800ce2f240f9e5f438 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Debugger: Move run parameters from engine to tool runnerhjk2017-05-181-3/+2
| | | | | | | | 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>
* Debugger: Remove DebuggerRunControlhjk2017-04-281-0/+2
| | | | | | | Use plain RunControl + DebuggerRunTool combo instead. Change-Id: Ib71b5eab50da667b9d71dcc6689d2643ad8ecdee Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Debugger: Base magic Qml connection discover on base run control signalhjk2017-04-201-4/+0
| | | | | | | | Less debugger specific code and less convoluted paths in debugger message handling. Change-Id: Ib298889c386d65f17acbdfc585188097bb20ed74 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* ProjectExplorer: Switch responsibilities for raising applicationshjk2017-03-081-0/+1
| | | | | | | | | | Instead of letting the launcher decide to raise something when started (and only then) leave it to the RunControl to trigger (and for now also to implement) as response to the application launcher start (or possibly now, in other circumstances). Change-Id: I0ac8f1e633981f7bf316c88e83c208765886d9a1 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Debugger: Implement QmlEngine::doUpdateLocalsUlf Hermann2016-11-031-0/+2
| | | | | | | | | This allows us to sort the locals by name immediately when the action is triggered. Task-number: QTCREATORBUG-16645 Change-Id: Ifd24f49e66523af5e988065c9a33aae00e7fb290 Reviewed-by: hjk <hjk@qt.io>
* QmlDebug: Decouple log messages from connection failuresUlf Hermann2016-07-181-2/+1
| | | | | | | | | A socket error is not the only possible reason for a connection failure and exposing socket error codes to the upper layers is unnecessary. Change-Id: I27e9f21160ecea5b0d811b83b7ab0ab9071cacff Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Debugger: De-slotOrgad Shaneh2016-06-281-2/+1
| | | | | | | Most Qt4 connects are gone. Change-Id: Ie74cfb11fc4b4c531f9e22c95a4d18336e1c29e8 Reviewed-by: hjk <hjk@theqtcompany.com>
* Debugger: Fix QByteArray/QString overload mixuphjk2016-06-141-1/+1
| | | | | | | And take the opportunity to sprinkle more 'override' over the code. Change-Id: I8b6b80653ca671e7681b7de2de5ad4288b281ccf Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Debugger: Remove debuggerstringutils.hhjk2016-06-091-4/+4
| | | | | | | | | | 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>
* Use Utils::Port where possibleUlf Hermann2016-04-201-2/+2
| | | | | | | This solves the ambiguity between 0 and -1 being the "invalid" port. Change-Id: I3bac11dd4117bb1820fbd58186699925b73df1c5 Reviewed-by: hjk <hjk@theqtcompany.com>
* Merge remote-tracking branch 'origin/4.0'Eike Ziller2016-04-151-0/+2
|\ | | | | | | Change-Id: Ied609608f6b12aa923c67777bc5a273c4d8fbcbb
| * Debugger: Clean pending lookup requests when preparing a stephjk2016-04-151-0/+2
| | | | | | | | | | | | | | | | This avoids accumulating lookup requests when stepping quickly. They won't produce usable output anymore. Change-Id: I9e29ca1778019e3eab37d122386d3faf0e07edbf Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
* | Qml Debugger: Eliminate client state callbackUlf Hermann2016-04-131-1/+0
| | | | | | | | | | | | | | | | The sender()/qobject_cast construct is ugly, unnecessary and it doesn't work if the method is called directly, rather than through a signal. Change-Id: I0ac09ad04b956fb4cac38a89162a9dc0055d1831 Reviewed-by: hjk <hjk@theqtcompany.com>
* | Wholesale conversion to #pragma oncehjk2016-03-301-4/+1
|/ | | | | | | Kudos to cgmb and https://github.com/cgmb/guardonce Change-Id: Ifa8970734b8d43fd08c9260c645bdb0228633791 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
* Update License according to agreement with Free Qt FoundationTobias Hunger2016-01-191-17/+12
| | | | | | | * Update files in src/plugins Change-Id: Ia5d77fad7d19d4bb3498e78661982f68729adb22 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
* Qml Debugger: Support "evaluate" while engine is runningUlf Hermann2016-01-081-1/+0
| | | | | | | | | | | | Newer versions of Qt can evaluate expressions without pausing the QML engine. We can take advantage of that. At the same time we can remove the crutch of using QQmlEngineDebugService for this. The latter produces inconsistent and generally worse results than the V4 debug service. Task-number: QTCREATORBUG-14931 Change-Id: Ic78d08a0b00cf7de3911b7b672ce229c6d779363 Reviewed-by: hjk <hjk@theqtcompany.com>
* Debugger: Work on WatchModel performancehjk2016-01-061-1/+0
| | | | | | | | | | | | | | | | | Don't instantiate repeating boilerplate item data in some cases (such as large arrays). This makes it necessary to access parent WatchItems in a lot more cases than before and needs another separation of WatchItem/WatchModel code to keep the dumper autotests in a functional state. For a plain std::vector<int> with 1 mio items this reduces extraction time from more than 2 minutes to about 3 seconds. Change-Id: I175c5f6ee90434a6e85342d8bb71bd10a04dd271 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com> Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
* Move QmlConsole to Debuggerhjk2015-12-091-2/+1
| | | | | | | | | | | Now it is closer to its only user and possibly reusable for no-QML uses there. We also drop the QML/JS syntax checker. The application being debugged can already tell us about syntax errors. There is no need to duplicate that functionality. Change-Id: I2ba151f9f4c854c6119ba5462c21be40bddcebf9 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com> Reviewed-by: hjk <hjk@theqtcompany.com>
* QmlDebug: Simplify error and state signalingUlf Hermann2015-11-191-3/+3
| | | | | | | | | There is no point in sending two signals for every state change and error. Also, the signals only reflect events in the socket, not in the logical connection. Change-Id: I617a925c69164aa1a02a7781b9da7dca55daa304 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Debugger: Remove remains of QmlEngine live update featurehjk2015-09-181-2/+0
| | | | | | Change-Id: Iaa77f9d9af103046841637862b8aacdc6b0342c7 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
* Debugger: Add 'override' to *Engine classeshjk2015-09-111-49/+49
| | | | | | | Thanks to clang-modernize. Change-Id: Ie1998c32d492cb458b9b4649c425c0de272ce976 Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
* Debugger: Merge QmlInspectorAdapter into QmlInspectorAgenthjk2015-08-281-2/+4
| | | | | | | | | There's a 1:1 relation, and the abstraction is not needed anymore. Also remove some unused code. Change-Id: I09a2522deb5d522f46ec7518d19978a038032fbb Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
* Debugger: Make QmlEngine heed "Sort Struct Members Alphabetically"hjk2015-07-161-0/+1
| | | | | Change-Id: Ib24e62c60eea4b0af355c3e93e48a78dc0b51efc Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
* Debugger: Split updateWatchData() pathshjk2015-07-161-1/+2
| | | | | | | | | There are two cases that do not coincide in asynchronous engines such as the QmlEngine: Inserting a new watch item, and expanding the children of an existing item. Change-Id: Ic98a5f1e89aca37146039a241de737c407606e83 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
* Debugger: Rework QmlEngine watcher expansionhjk2015-07-161-2/+0
| | | | | | | | | | | | | | | | | | | Use callbacks in QmlEnginePrivate::evaluate(). This separates the four code paths through the machinery into three separate handlers and one direct access to the console. This also fixes a bug where items were put into 'debuggerCommands' but attempted to be removed from 'updateLocalsAndWatchers'. Introduce a QmlEngine::updateLocals similar to what the other engines do. Let the frame() and assignValue() paths use it. Keep track of pending changes and call notifyUpdateFinished if and only if the pending lookup queues is empty. Finally, remove some dead code. Change-Id: I173a52911d0de994b849fc6ab4f52ef7f64a8ba5 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
* Debugger: Consolidate QmlEnginehjk2015-07-091-65/+27
| | | | | | | | | | Create a QmlEnginePrivate. Move the QmlDebugClient there. Merge QmlAdapter into QmlEngine Abstraction is not used anymore. Move some helper bits to a qmlengineutils.{h,cpp} Change-Id: I63117355d786cc12641101b7fd38c7cd208d11eb Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
* Debugger: Consolidate GDB and LLDB "updateLocals" code pathshjk2015-06-101-6/+3
| | | | | | | | | | | | | | | | | 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>
* Debugger: Split off runtime-only items from DebuggerStartParametershjk2015-05-281-1/+1
| | | | | | | | | 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>
* Debugger: Remove most remaining occurrences of WatchDatahjk2015-03-201-3/+2
| | | | | | | | | ... 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>
* QML: Remove Apply on Save functionalityKai Koehne2015-03-181-0/+1
| | | | | | | | | | | | | | | The feature has been actually been disabled since commit ac771eb552e4, 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: Kai Koehne <kai.koehne@theqtcompany.com>
* Debugger: Remove widget argument from tooltip requesthjk2015-03-061-4/+2
| | | | | | | The only information ever used is whether it's c++ or not. Change-Id: I4ca00663856dd66cbdf58c468f175a8c9e41d6a5 Reviewed-by: hjk <hjk@theqtcompany.com>
* Debugger: Remove WatchUpdateFlagshjk2015-03-061-2/+1
| | | | | | | Only needed in the non-Python days. CDB didn't use it to start with. Change-Id: Ia609218cc1a694f797e278c4d99ead68e6212938 Reviewed-by: hjk <hjk@theqtcompany.com>
* Clean exported headers of the Debugger plugin.Friedemann Kleint2015-02-261-1/+3
| | | | | Change-Id: I70ca6773e0f6aa6d80a441f8920d7f5d2418e1bf Reviewed-by: hjk <hjk@theqtcompany.com>