Skip to content
Snippets Groups Projects
user avatar
Lasse Holmstedt authored
Reviewed-by: hjk
09327628
History
Name Last commit Last update
..
cdb
gdb
images
pdb
qml
script
shared
tcf
Debugger.pluginspec
README
attachcoredialog.ui
attachexternaldialog.ui
attachtcfdialog.ui
breakcondition.ui
breakhandler.cpp
breakhandler.h
breakpoint.cpp
breakpoint.h
breakpoint.ui
breakwindow.cpp
breakwindow.h
commonoptionspage.ui
consolewindow.cpp
consolewindow.h
debugger.pri
debugger.pro
debugger.qrc
debugger_dependencies.pri
debugger_global.h
debuggeractions.cpp
debuggeractions.h
debuggeragents.cpp
debuggeragents.h
debuggerconstants.h
debuggerdialogs.cpp
debuggerdialogs.h
debuggerengine.cpp
debuggerengine.h
debuggermainwindow.cpp
debuggermainwindow.h
debuggerplugin.cpp
debuggerplugin.h
debuggerrunner.cpp
debuggerrunner.h
debuggerstringutils.h
debuggertooltip.cpp
debuggertooltip.h
debuggeruiswitcher.cpp
debuggeruiswitcher.h
dumper.pro
dumperoptionpage.ui
logwindow.cpp
logwindow.h
moduleshandler.cpp
moduleshandler.h
moduleswindow.cpp
moduleswindow.h
name_demangler.cpp
name_demangler.h
outputcollector.cpp
outputcollector.h
procinterrupt.cpp
procinterrupt.h
registerhandler.cpp
registerhandler.h
registerpostmortemaction.cpp
registerpostmortemaction.h
registerwindow.cpp
registerwindow.h
sessionengine.cpp
sessionengine.h
snapshothandler.cpp
snapshothandler.h
snapshotwindow.cpp
snapshotwindow.h
sourcefileshandler.cpp
sourcefileshandler.h
sourcefileswindow.cpp
sourcefileswindow.h
stackframe.cpp
stackframe.h
stackhandler.cpp
stackhandler.h
stackwindow.cpp
stackwindow.h
startexternaldialog.ui
startremotedialog.ui
threadshandler.cpp
threadshandler.h
threadswindow.cpp
threadswindow.h
watchdata.cpp
watchdata.h
watchdelegatewidgets.cpp
watchdelegatewidgets.h
watchhandler.cpp
watchhandler.h
watchutils.cpp
watchutils.h
watchwindow.cpp
watchwindow.h
Architectural overview
----------------------

DebuggerPlugin is the main interface between the Qt Creator "Core" and the
DebuggerManager who is responsible for "doing the work".

The DebuggerManager creates all DebuggerEngines, and has zero or one
"current" Engine. Engines represent an interface to a "native" debugger.
Right now there are engines for gdb (used for C++ on Linux, Mac, Windows/MinGW,
Maemo and Symbian), for cdb (used for C++ on Windows/MSVC) and "script" (used
for JavaScript on all platforms).

  The GdbEngine has different "Adapters" to cope with the variety of environments
  it has to cope with. All gdb Adapters inherit from AbstractGdbAdapters.

    PlainGdbAdapter handles debugging of locally started GUI processes.
    It is physically split into parts
    relevant only when Python is available, parts relevant only when Python is
    not available and "mixed" code.

    TermGdbAdapter is used to debug locally started processes that need a
    console.

    AttachGdbAdapter is used to debug local processes started outside Creator.

    CoreGdbAdapter is used to debug core files generated from crashes.

    RemoteGdbAdapter is used to talk to gdbserver running on Linux.

    TrkGdbAdapter is used to talk to Symbian devices using the gdb protocol and
    the gdb serial protocol between gdb and the Adapter and the TRK protocol
    between the adapter and AppTRK running on the device.

  Gdb comes in main two flavours: with or without Python. The Python version
  is preferred, but it is not available on Mac and on older versions of Linux.
  On Windows, Symbian and Maemo we only support the Python version.

  The non-Python versions use the compiled version of the debugging helpers,
  that needs to be enabled in the Qt4 Versions dialog, the Python version use
  the script version that does not need any special setup.

  The CdbEngine is functionality-wise similar to the Non-Python GdbEngine on
  Linux, most notably it uses the same setup for the debugging helper library
  (compiled C++ code).




Per platform the situation for C++ debugging looks like:
[Helper loading strategy: /i - injected, /p - preload, /- not available]

          Symbian    Maemo       Linux          Mac            Windows
                                                          MinGW       MSVC

Engine:     gdb      gdb          gdb           gdb        gdb        cdb

Python:     yes      yes       yes     no       no         no        (not/appl)

Adapters:   trk     remote    term   term/i     term/i     term       term/i
                              plain  plain/p    plain/i    plain      plain/i
                              attach attach/i   attach/i   attach     attach/i
                              remote attach/-   remote/-   remote

Minimum
supported  FSF       FSF      FSF     FSF       Apple      FSF         -
version:   7.1       7.1      7.1     6.8       1344       7.2
                  (no python)

Version    FSF       FSF          FSF           (XCode)    FSF         -
in SDK:    7.2       7.1          7.2                      7.2
                  (no python)