Skip to content

Remote Debugging Status

Volker Krause edited this page Dec 10, 2015 · 60 revisions

Overview on the ongoing work to enable remote debugging with GammaRay.

Core

  • split the ToolFactory for core/ui so we can also split plugins [DONE]
  • allow the plugin manager .desktop file scanner to separate core and ui plugins [DONE]
  • use ToolModel for the plugin info dialog, so we see the server state rather than the client one [DONE]
  • remote selection model sometimes "oscillates" [DONE]
  • add deferred QHeaderView configuration also for sort order (lost on column count reset), and possibly other QHeaderView settings as well
  • compress dataChanged() signals in RemoteModel
  • QIcon serialization across processes does not work unless QRC file is available in both [worked around using explicit pixmap conversion]
  • compile common, core and probe DLLs without linking to Qt5::Widgets: [FIXED]
    • resource model uses QFileSystemModel and QFileIconProvider [FIXED]
    • Probe and model inspector use QWidget/QApp for handling selection based on clicked on widget [FIXED]
    • object recovery on attaching uses QApp [FIXED]
    • Probe uses QDialog to de-modalize dialogs [FIXED]
    • Variant to string conversion uses some widget types [FIXED]
    • non-Q meta object repository contained QGV and QWidget types [FIXED]

Server

  • automatically pick a different port if the default one is already in use [DONE]

Client

  • properly handle connection errors [DONE]

Launcher

  • add support for SSH remote launch [FUTURE]
  • adjust launch and attach actions to use out-of-process mode by default [DONE]

Tools

  • split core and ui parts [DONE]
  • turn tools with QtWidget dependency into plugins [DONE]
    • same for QtGui even?
  • split plugins with no widget dependencies in their probe part into two DLLs [DONE]

Action Inspector

Connections

  • core/ui split [DONE]
  • was using a proxy detacher optimization before, still needed considering the remote model (un)monitoring feature? [DONE]

Fonts

  • font preview needs to be rendered on the server side [DONE]
  • basic core/ui split [DONE]
  • triggers a crash on QCoreApplication [FIXED]
  • split plugin into probe and ui part [DONE]

Graphics Scene

  • needs to be turned into a plugin [DONE]
  • basic core/ui split [DONE]
  • scene preview and overlays don't work remotely [DONE]
  • initial scene selection fails [DONE]
  • glitches in the scene model amplified by remoting [DONE]

KJobs

  • core/ui split [DONE]
  • UI does not depend on KJob and thus could be built even if KJob is not available (e.g. with Qt5) [DONE]

Locales

  • core/ui split [DONE]

Messages

  • core/ui split [DONE]
  • qFatal handler still depends on QtWidgets [DONE]

Meta Objects

  • core/ui split [DONE]
  • initial tree expansion still assumes immediately populated model [DONE]

Meta Types

  • core/ui split [DONE]

Mimetypes

  • core/ui split [DONE]

Models

  • core/ui split [DONE]
  • QModelIndex details shown in the client are not the ones from the server [DONE]
  • for viewing content of proxy models that overwrite data() https://codereview.qt-project.org/#change,53097 is needed
  • cleanup implementation of remoting, use an identity proxy model on the server side instead of RemoteModelServer. remove need for distinguishing between client/in-probe mode in the GUI.

Objects

  • core/ui split [DONE]

Object Visualization

  • port to populating the graph based on model content rather than raw QObject pointers [DONE]
  • split plugin into probe and ui part [DONE]

Resources

  • core/ui split [DONE]
  • first column doesn't show content remotely [DONE]
  • content preview is not yet working remotely (might need on-demand role loading in RemoteModel) [DONE]
  • tree view and splitter setup fails due to lazy model population [DONE]
  • triggers crash in Qt due to QFileIconProvider when used inside a QCoreApplication [FIXED]

Script Engines

  • probably unportable, hide in out-of-process mode [DONE]

Selection Models

  • core/ui split [DONE]
  • selection content view does not work remotely yet [DONE]
  • split plugin into probe and ui part [DONE]

Standard Paths

  • core/ui split [DONE]

State Machines

  • core/ui split [DONE]
  • split plugin into probe and ui part [DONE]

Style

  • needs to be turned into a plugin [DONE]
  • core/ui split [DONE]
  • performance issue: all rendered primitives seem to be transferred initially rather than on demand [DONE]
  • some states are stuck on "loading..." [FIXED]
  • view properties (height, width, zoom) are not working remotely [DONE]
  • icons are not properly transferred [DONE]
  • initial style selection fails [DONE]
  • crashes when selecting a different style remotely before showing the style locally/in-probe

Text Codecs

  • core/ui split [DONE]
  • move into plugin [DONE]
  • selected codecs model resets on text change, causing annoying flickering when used remotely [DONE]
  • split plugin into probe and ui part [DONE]

Text Documents

  • core/ui split [DONE]
  • content preview does not work remotely
  • block bounding boxes are not shown remotely

Timers

  • core/ui split [DONE]
  • periodic view update needs to be moved to the model [FIXED]
  • split plugin into probe and ui part [DONE]

Web Inspector

  • WebKit 1 inspection not available remotely - show information message [DONE]
  • WebKit 2 inspection:
    • enable developer mode automatically [partial - only with experimental module loaded already]
    • use hostname and port from the GammaRay connection [DONE]
    • environment variable apparently not set early enough [DONE]

Widgets

  • needs to be turned into a plugin [DONE]
  • basic core/ui split [DONE]
  • "Save As" actions need to send data to the client, to be written into a file there
  • paint analyzer needs to be split in client and server part [DONE]
  • widget preview does not yet work remotely [DONE]
  • initial selection happens too early for anything being present for selection