aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/debugger
Commit message (Collapse)AuthorAgeFilesLines
* Speed up object creationSimon Hausmann2015-04-162-3/+3
| | | | | | | | Avoid copying url and file name twice into the context every time we instantiate an object. Change-Id: I1c76b80b9c44f95512af5899d760151f6dcd7bb5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Speed up binding evaluationSimon Hausmann2015-04-161-4/+4
| | | | | | | | | Don't spend any cycles of determining the location of the binding (file, line, column) unless we really need that information. That's the case when the profiler is active or an error happens. Change-Id: Iae97808d500b88fed6a813e8b224aa6ebe04d3b6 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix profiler adapter documentationUlf Hermann2015-03-241-18/+34
| | | | | | | | Update it to include the features arguments and mark it as internal. Change-Id: If0324d413c60d3d4bb203fb383dcd20e50db0e88 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* Fix build: QString needs to be fully-defined for QString()Thiago Macieira2015-03-051-0/+1
| | | | | | | | qqmldebug.h:46:71: error: invalid use of incomplete type ‘class QString’ qglobal.h:651:7: error: forward declaration of ‘class QString’ Change-Id: I1a800c709d3543699131ffff13c3797acbc19956 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
* QtQml: Micro-optimize iterator loops.Friedemann Kleint2015-02-261-4/+4
| | | | | | | Avoid repeated instantiation of end() in loops, use variable instead. Change-Id: I3bb1c6918cfd16a5dcefbcc03c442e99fe9bf76b Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* Include <limits> in qqmlprofilerservice_p.hUlf Hermann2015-02-251-0/+2
| | | | | | | | As we use std::numeric_limits in that file we should do this. Change-Id: Idd8da16ce062b2ef24f926bcf33de95559464bb9 Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Update copyright headersJani Heikkinen2015-02-1231-217/+217
| | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9 Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
* QQmlEngineDebugService: Avoid assert when debugging QModelIndexGabriel de Dietrich2015-02-041-1/+15
| | | | | | | | | | | | | | QModelIndex is not streamable, so returning the input QVariant in valueContents() will result in an assert. We try to detect whether the input QVariant is a know value type and then call the toString() meta-method on it. Otherwise, we fall back to thge old behavior. This works since QModelIndex is exposed to QML wrapped in an internal value type class (at least for the time being). Change-Id: I1a4c61b2bd441f823469dd73b31e86a1192f02e6 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* Remove all remaining usages of ValueRefLars Knoll2015-01-231-2/+2
| | | | | Change-Id: Icd76d3d03fac2e57530e55f8ec15b97109dcdcbc Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Rename QML debug macro to Qt naming stylePasi Petäjäjärvi2015-01-121-4/+4
| | | | | | | | | | With this change the macro is in line with QT_NO_<feature> style of naming macros. This way it will also be automatically added to the file mkspecs/qmodule.pri in QT_NO_DEFINES value. Change-Id: I96041438ef68bbcbc4e66301b0f5fe1212129c1a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
* Disallow QQmlDebugServer::enable for QT_QML_NO_DEBUGGERUlf Hermann2015-01-121-0/+8
| | | | | | | | | | | This mirrors the behavior of the QQmlDebugServer constructor. Unfortunately we have two #defines to disable the debug server, QT_QML_NO_DEBUGGER and QQML_NO_DEBUG_PROTOCOL. We should honor both of them as people might rely on either of them to effectively prevent the debug server from working. Change-Id: I0bc0d48632eaa05c471d0afed6fc48436116746a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove most of the places where getPointer() is usedLars Knoll2014-12-201-2/+2
| | | | | | | This is no longer required, and simply uglifies the code Change-Id: Iba91a1d7735ebe23a43437f137a488423b6eb743 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Replace usage of stdout for debug output by qDebugErik Verbruggen2014-12-191-7/+7
| | | | | | | | This way even paranoid Androids can be show interesting stuff. Task-number: QTBUG-43109 Change-Id: Ib0ef9e8f6c6fc66e9ea9bfcaf2cd9e33d7469070 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* fix the build with -no-qml-debugShawn Rutledge2014-12-131-1/+0
| | | | | | | The "cleanup" variable doesn't exist in this case. Change-Id: Ia7ed654d5c9ae57bc3f7cff39acbd72214ff4188 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devSimon Hausmann2014-12-094-7/+12
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4arraydata.cpp src/qml/jsruntime/qv4context_p.h src/qml/jsruntime/qv4globalobject.cpp src/qml/jsruntime/qv4internalclass.cpp src/quick/items/qquicktext_p.h src/quick/items/qquicktextedit_p.h src/quick/items/qquicktextinput_p.h Change-Id: If07e483e03197cb997ef47a9c647a479cdb09f4c
| * QQmlInspectorService: handle views only with supported plugins.v5.4.0Ulf Hermann2014-12-051-0/+1
| | | | | | | | | | | | | | Task-number: QTBUG-43048 Change-Id: I5b32bd0a1e28fdf56b5346580daf21e7ec1b9f8c Reviewed-by: Kevin Funk <kevin.funk@kdab.com> Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
| * Don't embded qmldbg_tcp plugin to libQt5Qml in static buildPasi Petäjäjärvi2014-11-111-5/+0
| | | | | | | | | | | | | | | | | | | | | | Embedding qmldbg_tcp sources to libQt5Qml causes multipled definitions of QTcpServerConnection symbols with static build on Qt Quick 2 applications. Qmake can resolve dependencies to static plugins applications use, so no need to embed this to libQt5Qml. Change-Id: I18c5e44b9ac3de4ef8be29cc5944de3527566b3c Reviewed-by: Fawzi Mohamed <fawzi.mohamed@theqtcompany.com>
| * Inspector: Do not assert when trying to stream QModelIndexKai Koehne2014-11-071-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some QVariant's like QModelIndex cannot be streamed in a meaningful way: QDataType::save() will return false for them. However, this leads to a qWarning and Q_ASSERT in QVariant::operator<<(). To prevent this we're calling QDataType::save() manually beforehand. We however throw away the result if it succeeds, and still call QVariant::operator<<() to get the benefits of the QDataStream version handling. The alternatives would be to make QVariant::operator<<() not assert, or blacklist all known types with problems manually. Both seem to be difficult though ... Change-Id: I4f5fe6d5a3a076c24fbc73371a4d12d720de53da Task-number: QTBUG-42438 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Mark cleanup function as unused if compiled with QT_QML_NO_DEBUGGERUlf Hermann2014-11-051-0/+1
| | | | | | | | | | | | | | | | | | | | The static cleanup function in qqmldebugserver.cpp is only used if the debug server is actually created. If not we can mark it as unused to avoid compile warnings. Enclosing it in #ifdef would be uglier. Task-number: QTBUG-42394 Change-Id: Ieb7fa38ecb346e80ce815ced85eb3a168bad9d99 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | QmlDebug: Provide public method for starting a debug serverUlf Hermann2014-12-054-37/+110
| | | | | | | | | | | | | | | | | | With QQmlDebuggingEnabler::startTcpDebugServer you can create a debug server for debugging or profiling also without the qmljsdebugger command line argument. Change-Id: I642f73680585f9c7578762bcc0b247c736fe1338 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Refactor ExecutionContextsLars Knoll2014-11-081-9/+9
| | | | | | | | | | | | | | Move the Data class out into the Heap namespace. Change-Id: I2b798deb53812a08155c92a0e6ef2dcd2ea137b8 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-10-0910-55/+85
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/context2d/qquickcanvasitem.cpp src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp src/quick/scenegraph/coreapi/qsgrenderer.cpp src/quick/scenegraph/qsgadaptationlayer.cpp src/quick/scenegraph/qsgrenderloop.cpp src/quick/scenegraph/qsgthreadedrenderloop.cpp src/quick/scenegraph/qsgwindowsrenderloop.cpp src/quick/scenegraph/util/qsgatlastexture.cpp src/quick/scenegraph/util/qsgtexture.cpp src/quick/util/qquickprofiler_p.h Change-Id: Ie274c3baf72a8a0711c87d67238d68e2b2887429
| * Fix mapping of JS objects/arrays to C++Simon Hausmann2014-09-172-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQml][Important Behavior Changes] When a JavaScript object/array is passed to C++ through a QVariant, the engine no longer immediately converts the object recursively into a QVariantMap or QVariantList but instead stores a QJSValue in the QVariant. This prevents a loss of data when the JS object contains non-primitive types such as function objects for example. Code that expects the variant type to be exactly QVariant::Map or QVariant::List may need to be adapted. Registered conversion functions however ensure that code that merely calls toMap() or toList() continues to work. Task-number: QTBUG-40431 Change-Id: I1dbc1d5f8e78ad28bb62db3681b9a0b34557e7f5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Select specific features to be recorded when profiling QMLUlf Hermann2014-09-118-52/+78
| | | | | | | | | | | | | | | | | | | | | | | | Some features, like the memory profiler, create huge amounts of data. Often enough, we're not actually interested in all the data available from the profiler and collecting it all can lead to excessive memory consumption. This change enables us to optionally turn various aspects of QML profiling off. Task-number: QTBUG-41118 Change-Id: I7bb223414e24eb903124ffa6e0896af6ce974e49 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Use QQuickProfiler's own timer to sample eventsUlf Hermann2014-09-121-12/+14
|/ | | | | | | | Like that the timings are more accurate. Task-number: QTBUG-39876 Change-Id: Ia6bdce9c8089417e88797ec3a98c8a3e367f73f2 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Update license headers and add new licensesJani Heikkinen2014-08-2531-577/+329
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: I84a565e2e0caa3b76bf291a7d188a57a4b00e1b0 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Write memory events into tracefiles generated by qmlprofilerUlf Hermann2014-08-121-0/+3
| | | | | Change-Id: Ic01505194f29967ed1aad16fe36e14dc5532ae25 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Add support for conditional breakpoints and evaluate.Erik Verbruggen2014-08-081-13/+78
| | | | | | | | | | | | Also centralized the context state saver and added line number saving, so that the JS jobs for evaluation of breakpoint conditions don't change the state of the current engine context. Task-number: QTBUG-37119 Task-number: QTCREATORBUG-11516 Change-Id: Ia21b3d64e239e5b67f3c07e1c006d8e6748f29b6 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Properly collect polish timings from all render loopsUlf Hermann2014-07-021-1/+1
| | | | | | | | | | | Previously the polish timings were collected incorrectly from the windows render loop and not at all from the basic render loop. By collecting the polish times at the right places we can get rid of the 2-argument profile macro as well. Task-number: QTBUG-39876 Change-Id: I0b4aaf87162c652b8dcea6cd4f54db053f8312fe Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Javascript heap profilerUlf Hermann2014-06-063-9/+36
| | | | | | | | | This profiler tracks every memory allocation and deallocation, by the MemoryManager as well as the V4 VM, and exposes them as a stream of events to the profiler service. Change-Id: I85297d498f0a7eb55df5d7829c4b7307de980519 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove V8 profiler serviceUlf Hermann2014-05-094-428/+0
| | | | | | | | | It's broken and useless and it sends confusing data to the profiler client. Task-number: QTCREATORBUG-12188 Change-Id: I944cf19a78ee4378d5773e7aa80876f199a0f03b Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Use RAII for VME profilerUlf Hermann2014-04-032-133/+62
| | | | | | | | | | | | | | Now that object creation is done in nested function calls we can use an RAII-type profiler to trace it. This makes the profiling much simpler and more robust. Also, the stack of profiling data in the VME profiler has to match the stack of completion callbacks in the VME, so the push and pop operations are synchronized now. Task-number: QTBUG-37978 Change-Id: I1bc5e0665b88e5b3772e48c8676cdda3fae59e1b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Give the QML and the debug server thread an objectname.Thomas McGuire2014-04-011-0/+1
| | | | | | | | | Now it is easier to identify the threads in e.g. the debugger in QtCreator. Change-Id: I032822e869df09cf43dc1d6e01d14610005ce217 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
* Fix some documentation errors.Friedemann Kleint2014-03-242-4/+5
| | | | | Change-Id: I5d4b3e26742202c4b634d0001fd3658c7263c50a Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* qmldebugger: avoid loading tcp module in inspectorFawzi Mohamed2014-03-111-0/+2
| | | | | | | | | loading the module twice starts two threads, and creates issues when unloading. Change-Id: I861df6a6b6a8942557d31d455b35e7987478a527 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
* qmldebugger: handle static builds correctlyFawzi Mohamed2014-03-112-0/+17
| | | | | | | | | | | | The loading of the qml debugger was hardcoded to dynamically load its plugins. Now directly build and instantiate the QQmlDebugServerConnection in static builds. Done-with: Kai Koehne <kai.koehne@digia.com> Change-Id: I38bf0e310caaa6aaa743e3814b0108c6fe7001df Reviewed-by: Ulf Hermann <ulf.hermann@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Don't delete the QML engines from the profiler service destructorUlf Hermann2014-03-111-1/+1
| | | | | | Task-number: QTBUG-37382 Change-Id: Ib40d69813794e18cc7c7f05e10881b1b23a93b4e Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Combine the source file, line and column number triplet in a common structureSimon Hausmann2014-03-041-15/+3
| | | | | | | | | This avoids unnecessary function calls when all of the three pieces need to be retrieved from a QQmlBoundSignalExpression. Change-Id: Ibcd498c907ea723baf6439cf32ca5fc704f204b5 Reviewed-by: Ulf Hermann <ulf.hermann@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* [new compiler] Fix profiler supportSimon Hausmann2014-03-041-1/+1
| | | | | | | | | Add profiler tracing calls during objection creation and make sure to set the function token / source location correctly for the synthesized function declarations of signal handlers. Change-Id: Ie4f8accce3a5c5d1d57bb0646cda588b89b76718 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Prefer to use normalised signal/slot signaturesSergio Ahumada2014-03-031-4/+4
| | | | | | Change-Id: I9856c110399c4b6b1ea6aba2d92392cecff04656 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix behavior when starting/stopping multiple QML profilers at onceUlf Hermann2014-02-272-26/+59
| | | | | | | | | | | | | Make sure they're all inserted into the m_startTimes map before any of them is actually stopped. Otherwise multiple "Complete" messages can be generated for only one profiling session. For consistency, also allow all profilers to be started at the same time with only one call to startProfiling(). Task-number: QTCREATORBUG-11532 Change-Id: I8f80e2f7432c31d5911e139f9632c36f2494cb96 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Don't needlessly flush start times when stopping profilingUlf Hermann2014-02-252-7/+17
| | | | | | | | | | | QQmlProfilerService::messageReceived() can call stopProfiling() multiple times in a row. If we flush the start times every time we get inconsistent data in the client. Profiler adapters should be removed from the start times when they're deleted, though. Task-number: QTCREATORBUG-11532 Change-Id: I6820971b7a93a7337cd8ad1b7b8b5aafdd654ab5 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Update QQmlAbstractProfilerAdapter documentation.Ulf Hermann2014-02-201-10/+67
| | | | | Change-Id: I11cce4e3494eb2eb06fa781a676cccf5eb2127a8 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Add dedicated QML profiler and adapterUlf Hermann2014-02-155-507/+580
| | | | | | | | The remaining "profiling" parts of the QML profiler service are engine specific and are best accessed through their own adapter. Change-Id: Idb763104bdd80e4dabdf132ec1a496b9bc9f6f46 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Move QtQuick profiling to own profiler adapterUlf Hermann2014-02-152-68/+0
| | | | | | | | The QtQuick parts of the QML profiler service thus become a proper global profiler which can be independently enabled and disabled. Change-Id: Ifad03801cab2be66a264fc46fdebdae582fcc99b Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Compile fix for MSVC2013Andrew Knight2014-02-141-1/+1
| | | | | | | | This fixes an inclusion error caused by eb8a091 under WinRT x64 MSVC2013. Change-Id: I3ebae0788264f4e3ccc0ae9f2bb4dbc4cceaa155 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
* V4 profiler adapterUlf Hermann2014-02-134-2/+199
| | | | | | | | This adapter attaches the V4 profiler to the QML profiling infrastructure. Change-Id: Ifaf77a3ba0790bc56d4b155260b0e05593ac799e Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Infrastructure for supporting multiple profilers in qqmlprofilerserviceUlf Hermann2014-02-136-115/+640
| | | | | | | | | The concepts of "global" and "engine" profilers are introduced. Profilers can either be attached to specific QML engines and run in their threads or they can be unspecific global profilers running in arbitrary threads. Change-Id: I3862fc65c07ccb33a1ca08cd2425e4079d3ffc02 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Add a debug service for controlling qml enginesUlf Hermann2014-02-103-2/+247
| | | | | | | | Like this we can control the starting and stopping of qml engines from the client without having to extend each of the other debug services. Change-Id: I5f1c077b6cfa0e628c32e8bcdea2ec053e310509 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Unify initial waiting of debug servicesUlf Hermann2014-02-1015-89/+363
| | | | | | | | | | | | The debug services generally behave in one of two ways when initializing: Either they block the initializing thread until some configuration is passed over the network or they just go on. By introducing a generalized configurable debug service the various ways of waiting on initialization are cleaned up. The API defined for it also allows for engine-specific initialization. Change-Id: Id5685ef17d2a7eb1222629f7caa5ec53076d47b2 Reviewed-by: Kai Koehne <kai.koehne@digia.com>