Commit Graph

45 Commits

Author SHA1 Message Date
Ulf Hermann
d29e7a0371 QML Inspector: Simplify
Since we don't need to support the Qt Quick 1 clients anymore, we can
drop some code.

Change-Id: I7afcad8024392f058a35b3ed0d28d2172587552a
Reviewed-by: hjk <hjk@qt.io>
2018-11-20 14:05:02 +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
hjk
a37c8add58 Debugger: Fix QmlInspector state update connection
Change-Id: I1693d593ec08c14c48b2c2800ce2f240f9e5f438
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-19 13:07:01 +00:00
hjk
2b9edb35ea Debugger: Slim down public QmlInspectorAgent interface
Change-Id: Ia2f728029530dfe4e3f4cc9c18313453f4851bc4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2016-08-04 10:51:40 +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
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
7de7eb6bca Debugger: Work on WatchModel performance
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>
2016-01-06 09:59:11 +00:00
Ulf Hermann
aeaddda37d QML Inspector: Don't misinterpret objects with ID 0
The invalid ID is -1 and we shouldn't send 0 to the engine debug
service by default as that will select some random object as context
for expression evaluation.

Change-Id: Ide245468f787cc449ff50ac846c7ff31620c01b4
Task-number: QTCREATORBUG-14931
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-12-15 11:34:04 +00:00
Ulf Hermann
e1dd3cf701 Remove unused include
Change-Id: Ica45c05004aacbd209067eb2a77bb5b94585a2a0
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-19 11:33:02 +00:00
Eike Ziller
3b1a966cc8 Merge remote-tracking branch 'origin/3.5'
Change-Id: Iebaabfc2f724cd493b7cab025406531cea5cd2dc
2015-09-01 12:57:51 +02:00
hjk
156320ff6c Debugger: Merge QmlInspectorAdapter into QmlInspectorAgent
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>
2015-08-28 07:37:19 +00:00
hjk
fdbee2783a QmlInspector: Fix crash on engine ramp down
Task-number: QTCREATORBUG-14972
Change-Id: Ia2a508fab872ac4496c2cb3fa932186e8e29278d
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-08-26 10:44:59 +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
hjk
3fd6e9e77c Debugger: Replace uses of one of the depracted WatchHandler members
Change-Id: I1761b75c0c2605e2d3157f318f26da5158cc6395
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-03-20 07:23:11 +00:00
Eike Ziller
9926fc2ab1 Merge commit '3c85058694ee2e41658d17f524fb48f0b187d2fe'
Conflicts:
	src/libs/utils/tooltip/tipcontents.cpp
	src/libs/utils/tooltip/tipcontents.h
	src/plugins/android/androiddeployqtstep.cpp
	src/plugins/baremetal/baremetalconstants.h
	src/plugins/baremetal/baremetaldevice.cpp
	src/plugins/baremetal/baremetaldevice.h
	src/plugins/baremetal/baremetaldeviceconfigurationwidget.cpp
	src/plugins/baremetal/baremetaldeviceconfigurationwidget.h
	src/plugins/baremetal/baremetaldeviceconfigurationwizard.cpp
	src/plugins/baremetal/baremetaldeviceconfigurationwizardpages.cpp
	src/plugins/baremetal/baremetaldeviceconfigurationwizardpages.h
	src/plugins/baremetal/baremetalplugin.cpp
	src/plugins/baremetal/baremetalplugin.h
	src/plugins/baremetal/baremetalruncontrolfactory.cpp
	src/plugins/baremetal/baremetalruncontrolfactory.h
	src/plugins/cppeditor/cppcodemodelinspectordialog.cpp
	src/plugins/cppeditor/cppdoxygen_test.cpp
	src/plugins/cppeditor/cppdoxygen_test.h
	src/plugins/debugger/breakpointmarker.cpp
	src/plugins/debugger/debuggeritemmodel.cpp
	src/plugins/debugger/debuggeritemmodel.h
	src/plugins/debugger/loadcoredialog.cpp
	src/plugins/genericprojectmanager/cppmodelmanagerhelper.cpp
	src/plugins/projectexplorer/addnewmodel.cpp
	src/plugins/projectexplorer/addnewmodel.h
	src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp
	src/plugins/qmlprofiler/abstracttimelinemodel.cpp
	src/plugins/qmlprofiler/abstracttimelinemodel.h
	src/plugins/qmlprofiler/notesmodel.cpp
	src/plugins/qmlprofiler/qml/CategoryLabel.qml
	src/plugins/qmlprofiler/qml/MainView.qml
	src/plugins/qmlprofiler/qml/Overview.js
	src/plugins/qmlprofiler/qml/Overview.qml
	src/plugins/qmlprofiler/qml/TimeDisplay.qml
	src/plugins/qmlprofiler/qml/TimeMarks.qml
	src/plugins/qmlprofiler/qmlprofilertimelinemodelproxy.cpp
	src/plugins/qmlprofiler/sortedtimelinemodel.cpp
	src/plugins/qmlprofiler/sortedtimelinemodel.h
	src/plugins/qmlprofiler/timelinemodelaggregator.cpp
	src/plugins/qmlprofiler/timelinemodelaggregator.h
	src/plugins/qmlprofiler/timelinerenderer.cpp
	src/plugins/qmlprofiler/timelinerenderer.h
	src/plugins/qmlprojectmanager/QmlProjectManager.json.in
	src/plugins/texteditor/findinfiles.cpp
	src/plugins/vcsbase/vcsconfigurationpage.cpp
	src/shared/qbs
	src/shared/scriptwrapper/interface_wrap_helpers.h
	src/shared/scriptwrapper/wrap_helpers.h
	tests/auto/qmlprofiler/abstracttimelinemodel/tst_abstracttimelinemodel.cpp
	tests/system/suite_debugger/tst_debug_empty_main/test.py
	tests/system/suite_debugger/tst_qml_js_console/test.py
	tests/system/suite_debugger/tst_qml_locals/test.py

Change-Id: I67540b648f8b162496f4aa606b04d50c7c9125c6
2015-02-12 17:29:21 +01:00
Eike Ziller
3c85058694 Update License
Change-Id: I711d5fb475ef814a1dc9d2822740e827f3f67125
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
2015-01-16 12:37:56 +01:00
hjk
aff13fdf27 Debugger: Make DebuggerEngine internal
Expose less of debugger internals to the device plugins.

Change-Id: Ie78756b033fae3fe02bff92eadf26b7319990605
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-12-15 17:23:48 +01:00
Eike Ziller
8295b503be License update
Change-Id: I3c22ef2685d7aa589f5d0ab74d693653a4c32082
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
2014-10-09 11:41:44 +02:00
Ulf Hermann
e6792d33c3 QmlDebugClient: Rename "status" to "state" for consistency
"state" is the more widely used term and we should follow that
convention. We also need to distinguish between the state of the
underlying network socket and the client itself. The change makes this
explicit.

As preparation for the upcoming centralized debug support the "State"
enum of the debug client is also moved into the QmlDebugClient class.

Change-Id: Ib9d7e03d23528f16ed696ed3518e813d11ea1c32
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-05-06 12:53:10 +02:00
Robert Loehning
746c5d8863 Incremented year in copyright info
Change-Id: Ib5423fdd064e4546f848c0b640b0ed0514c26d3a
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-08 08:29:47 +01:00
Eike Ziller
a2171c2d82 Merge remote-tracking branch 'origin/2.7'
Conflicts:
	share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp

Change-Id: I7f319154d5865c47ccfd5f525f0fd7983733dd0e
2013-05-03 09:49:28 +02:00
Orgad Shaneh
3245b706bc Fix crash
Task-number: QTCREATORBUG-9230
Change-Id: I24a6277c9ca5f35c803e276da82ca2b9e9d79f57
Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
2013-05-01 09:33:39 +02:00
Friedemann Kleint
85d12bb409 Clean headers in debugger plugin.
Change-Id: Ia50e61a82101b699390b23b4f1ea9509619314bb
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-03-22 10:00:00 +01:00
Robert Loehning
298531e370 Incremented year in copyright info
Change-Id: Ic6a9ff0359625021ebc061d22db6811814534205
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-01-29 16:27:03 +01:00
Aurindam Jana
6bbd80143b QML/JS Console: Update context
Update context from QML object tree or the stack frame
depending upon debugger engine state.

Change-Id: I4e6affba37acc016513ad95cd278a400aaa18c49
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
2012-11-27 17:32:11 +01:00
Aurindam Jana
46101b0bb2 Inspector: Update Editor on object selection
When an object is selected in the Inspector, the
Editor is updated to show the relevant code.

Task-number: QTCREATORBUG-8246

Change-Id: I4f7fbcccdeb22849682fa72c63e87a78f48d185b
Reviewed-by: hjk <qthjk@ovi.com>
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
2012-11-26 15:04:56 +01:00
Aurindam Jana
32a0afb9df Inspector: Fetch objects lazily
QML objects are fetched lazily when constructing the object tree.
Incase parents have not been previously fetched, we fetch the
required data to construct only the relevant branch of the tree.

Task-number: QTCREATORBUG-8246
Change-Id: Id529c3b2334d33ff4eb46b14f50cf042ad2960e2
Reviewed-by: hjk <qthjk@ovi.com>
2012-11-24 22:51:19 +01:00
Aurindam Jana
d4bb573585 Inspector: Refactor data insertions
Change-Id: I188c41a5335ff626cce519a0622e2201197df0fa
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
2012-10-11 17:04:20 +02:00
hjk
386ca7c8dd Adjust license headers
Change-Id: Ice592c6de9951ee3b2c4cb52ed0bb3b6770e0825
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2012-10-05 17:12:56 +02:00
Aurindam Jana
59f8c87659 QmlInspector: Fetch data when needed
Fetch data on demand for 4.x. Since, parentIds are not
known, the tree will be reset when new objects are created.
Related changes in Qt side:
https://codereview.qt-project.org/#change,35982

Task-number: QTCREATORBUG-7779
Change-Id: I8b53604979bbbc2e6f01bc7b785929811a76f398
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
2012-10-01 17:43:58 +02:00
Eike Ziller
e0e8cf3ada Contact -> qt-project.org
Change-Id: I7134d7de30bcf9f9dcfad42520dd45ee083a852d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-19 13:23:21 +02:00
Simjees Abraham
80180ba714 Debugger: Prompt for reload if set/reset binding fails.
QtCreator takes into account the result of message from
qtdeclarative for setting, resetting and updating the method
body.

Task-number: QTCREATORBUG-3264
Change-Id: I15d1a33990175e86bb3f2fee08f75dd5b7b1b628
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
2012-06-05 12:07:06 +02:00
Aurindam Jana
fc1f265e87 QmlJSInspector: Improve performance
Populating watchhandler can be expensive. Update
with just the necessary data.

Change-Id: I06c28e1c8f5437cc05d3f9cef139d3df9da10c81
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
2012-05-30 15:12:20 +02:00
Aurindam Jana
799fc18bd7 QmlJSInspector: Remove dependency on QmlJSTools
As Location information is already cached, there is no
need to fetch the information from the QmlJS Semantic info.

Task-number: QTCREATORBUG-7409
Change-Id: I9cc3dce0910632cfe517f7697d74691e6675793b
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
2012-05-29 16:54:12 +02:00
Simjees Abraham
e4677d5a91 Debugger: Engines Queried on Reload of Qml.
Change-Id: I75de9fa584af8eb22a3eac6b0ab9d30b87d2ed69
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
2012-05-29 11:22:07 +02:00
Simjees Abraham
bd5fe5243b Debugger: Change in response for message "destroyObject".
Response for "destroyObject" now has the debugId of the
destroyed object. This is used to fetch the parent object rather
than querying the engine context.

Change-Id: I2e5b7650cbe847117cce6952206dd479ee696f0e
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
2012-05-29 11:20:48 +02:00
Aurindam Jana
a79e38ac6f QmlJSInspector: Set property values
QML property values could be set in the inspector.
Regression introduced by 7f09d0b756.
This patch is a partial fix. Only values can be assigned currently.
For expressions, use the console.

Change-Id: I945b11109cd7788dd0f5277af206bf9658844aee
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
Reviewed-by: hjk <qthjk@ovi.com>
2012-05-25 11:20:49 +02:00
Aurindam Jana
023deff474 QmlJSInspectorAgent: Refactor code
Try to use the watchHandler for referring to the object tree
instead of caching the object tree locally.

Change-Id: I68624771ef49d50f2cf0d6d580b1b34d57483178
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
2012-05-25 11:20:36 +02:00
hjk
e11a3a7697 debugger: rework WatchModel
It's one model for all locals, watch, return, tooltip and inspector
data. This allows more streamlined code paths and better isolation
of the model data from the WatchHandler. WatchItems are now registered
in a hash indexed by iname, so inames can be used as the primary
handle to watch data in the WatchHandler interface.

Change-Id: Idac0a808b5d785307496d1de4198a1f2e9ce3880
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
2012-05-24 14:33:34 +02:00
Aurindam Jana
b9d9bb7ba8 QmlJSInspector: New Objects created
Send the engineid, objectid and parentid.

Change-Id: I7b340c1f20ba3eb3f1690d45b28819f6efaae013
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-05-22 10:43:41 +02:00
Aurindam Jana
b9bc68c370 QmlInspector: Fetch objects for location
Since the object tree is fetched lazily, we might have
objects whose debugIds are not known. In such cases,
objects can be fetched by passing the location info.

Change-Id: I2001460cc14401e011efef9be9194c9f7868d617
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-05-13 18:24:27 +02:00
Kai Koehne
b2a2a7cc18 QmlDebug: Renaming
Move Status enum out of QmlDebugClient and drop "QmlDebug"
prefix for the different 'Reference' structs. Allows to
avoid 'using namespace in QmlDebug' in header files.

Change-Id: Id9857977300e86d637cf128ff3417d8b24c8e995
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
2012-05-10 10:33:45 +02:00
Kai Koehne
7f09d0b756 Merge QML inspector into debugger plugin
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>
2012-05-09 12:42:44 +02:00