Updated source docu.

Thu, 17 Dec 2020 14:40:06 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 17 Dec 2020 14:40:06 +0100
changeset 7887
c1588f5a83e9
parent 7885
3e4605cc3541
child 7888
803f811dc466

Updated source docu.

eric6/APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
eric6/APIs/Python3/eric6.bas file | annotate | diff | comparison | revisions
eric6/DebugClients/Python/ModuleLoader.py file | annotate | diff | comparison | revisions
eric6/DebugClients/Python/MultiProcessDebugExtension.py file | annotate | diff | comparison | revisions
eric6/Debugger/DebugServer.py file | annotate | diff | comparison | revisions
eric6/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
eric6/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.DebugClients.Python.DebugBase.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.DebugClients.Python.DebugClient.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.DebugClients.Python.DebugConfig.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.DebugClients.Python.DebugUtilities.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.DebugClients.Python.ThreadExtension.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.BreakPointModel.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.BreakPointViewer.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.CallStackViewer.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.CallTraceViewer.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.Config.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.DebugServer.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.DebugUI.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.DebugViewer.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.ExceptionLogger.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.StartDialog.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Debugger.VariablesFilterDialog.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.QScintilla.Editor.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.QScintilla.MiniEditor.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.QScintilla.Shell.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/index-eric6.DebugClients.Python.html file | annotate | diff | comparison | revisions
--- a/eric6/APIs/Python3/eric6.api	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/APIs/Python3/eric6.api	Thu Dec 17 14:40:06 2020 +0100
@@ -291,10 +291,9 @@
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.arrayTypes?7
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.clientCapabilities?7
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.close?4(fd)
-eric6.DebugClients.Python.DebugClientBase.DebugClientBase.connectDebugger?4(port, remoteAddress=None, redirect=True)
+eric6.DebugClients.Python.DebugClientBase.DebugClientBase.connectDebugger?4(port, remoteAddress=None, redirect=True, name="")
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.eventLoop?4(disablePolling=False)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.eventPoll?4()
-eric6.DebugClients.Python.DebugClientBase.DebugClientBase.fork?4()
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.getCoding?4()
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.getRunning?4()
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.handleJsonCommand?4(jsonStr)
@@ -306,6 +305,7 @@
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendCallTrace?4(event, fromInfo, toInfo)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendClearTemporaryBreakpoint?4(filename, lineno)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendClearTemporaryWatch?4(condition)
+eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendDebuggerId?4(debuggerId)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendException?4(exceptionType, exceptionMessage, stack)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendJsonCommand?4(method, params)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendPassiveStartup?4(filename, exceptions)
@@ -313,12 +313,11 @@
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendSyntaxError?4(message, filename, lineno, charno)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sessionClose?4(terminate=True)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.setDisassembly?4(disassembly)
-eric6.DebugClients.Python.DebugClientBase.DebugClientBase.startDebugger?4(filename=None, host=None, port=None, enableTrace=True, exceptions=True, tracePython=False, redirect=True)
-eric6.DebugClients.Python.DebugClientBase.DebugClientBase.startProgInDebugger?4(progargs, wd='', host=None, port=None, exceptions=True, tracePython=False, redirect=True)
+eric6.DebugClients.Python.DebugClientBase.DebugClientBase.startDebugger?4(filename=None, host=None, port=None, enableTrace=True, exceptions=True, tracePython=False, redirect=True, passive=True, multiprocessSupport=False)
+eric6.DebugClients.Python.DebugClientBase.DebugClientBase.startProgInDebugger?4(progargs, wd='', host=None, port=None, exceptions=True, tracePython=False, redirect=True, passive=True, multiprocessSupport=False, codeStr="")
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.writeReady?4(stream)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase?1()
 eric6.DebugClients.Python.DebugClientBase.DebugClientClose?4(fd)
-eric6.DebugClients.Python.DebugClientBase.DebugClientFork?4()
 eric6.DebugClients.Python.DebugClientBase.DebugClientInput?4(prompt="")
 eric6.DebugClients.Python.DebugClientBase.DebugClientInstance?7
 eric6.DebugClients.Python.DebugClientBase.DebugClientSetRecursionLimit?4(limit)
@@ -333,12 +332,22 @@
 eric6.DebugClients.Python.DebugConfig.BatchSize?7
 eric6.DebugClients.Python.DebugConfig.ConfigKnownQtTypes?7
 eric6.DebugClients.Python.DebugConfig.ConfigQtNames?7
-eric6.DebugClients.Python.DebugConfig.ConfigVarTypeStrings?7
+eric6.DebugClients.Python.DebugConfig.SpecialAttributes?7
 eric6.DebugClients.Python.DebugUtilities.ArgInfo?7
+eric6.DebugClients.Python.DebugUtilities.PYTHON_NAMES?7
 eric6.DebugClients.Python.DebugUtilities._getfullargs?5(co)
 eric6.DebugClients.Python.DebugUtilities.formatargvalues?4(args, varargs, varkw, localsDict, formatarg=str, formatvarargs=lambda name: '*' + name, formatvarkw=lambda name: '**' + name, formatvalue=lambda value: '=' + repr(value))
 eric6.DebugClients.Python.DebugUtilities.getargvalues?4(frame)
+eric6.DebugClients.Python.DebugUtilities.isExecutable?4(program)
+eric6.DebugClients.Python.DebugUtilities.isPythonProgram?4(program)
+eric6.DebugClients.Python.DebugUtilities.isWindowsPlatform?4()
+eric6.DebugClients.Python.DebugUtilities.patchArgumentStringWindows?4(debugClient, argStr)
+eric6.DebugClients.Python.DebugUtilities.patchArguments?4(debugClient, arguments, noRedirect=False)
 eric6.DebugClients.Python.DebugUtilities.prepareJsonCommand?4(method, params)
+eric6.DebugClients.Python.DebugUtilities.quoteArgs?4(args)
+eric6.DebugClients.Python.DebugUtilities.removeQuotesFromArgs?4(args)
+eric6.DebugClients.Python.DebugUtilities.startsWithShebang?4(program)
+eric6.DebugClients.Python.DebugUtilities.stringToArgumentsWindows?4(args)
 eric6.DebugClients.Python.DebugVariables.ArrayResolver.TypeCodeMap?7
 eric6.DebugClients.Python.DebugVariables.ArrayResolver.getDictionary?4(var)
 eric6.DebugClients.Python.DebugVariables.ArrayResolver.resolve?4(var, attribute)
@@ -375,6 +384,41 @@
 eric6.DebugClients.Python.FlexCompleter.Completer.global_matches?4(text)
 eric6.DebugClients.Python.FlexCompleter.Completer?1(namespace=None)
 eric6.DebugClients.Python.FlexCompleter.get_class_members?4(klass)
+eric6.DebugClients.Python.ModuleLoader.ModuleLoader.create_module?4(spec)
+eric6.DebugClients.Python.ModuleLoader.ModuleLoader.exec_module?4(module)
+eric6.DebugClients.Python.ModuleLoader.ModuleLoader.find_module?4(fullname, path=None)
+eric6.DebugClients.Python.ModuleLoader.ModuleLoader.find_spec?4(fullname, path, target=None)
+eric6.DebugClients.Python.ModuleLoader.ModuleLoader.load_module?4(fullname)
+eric6.DebugClients.Python.ModuleLoader.ModuleLoader?1(debugClient)
+eric6.DebugClients.Python.MultiProcessDebugExtension._debugClient?8
+eric6.DebugClients.Python.MultiProcessDebugExtension._shallPatch?5()
+eric6.DebugClients.Python.MultiProcessDebugExtension.createCreateProcess?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createExecl?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createExecv?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createExecve?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createFork?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createForkExec?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createPosixSpawn?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createSpawnl?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createSpawnv?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.createSpawnve?4(originalName)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newCreateProcess?4(appName, cmdline, *args)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newExecl?4(path, *args)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newExecv?4(path, args)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newExecve?4(path, args, env)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newFork?4()
+eric6.DebugClients.Python.MultiProcessDebugExtension.newForkExec?4(args, *other_args)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newPosixSpawn?4(path, argv, env, **kwargs)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newSpawnl?4(mode, path, *args)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newSpawnv?4(mode, path, args)
+eric6.DebugClients.Python.MultiProcessDebugExtension.newSpawnve?4(mode, path, args, env)
+eric6.DebugClients.Python.MultiProcessDebugExtension.patchModule?4(module, functionName, createFunction)
+eric6.DebugClients.Python.MultiProcessDebugExtension.patchNewProcessFunctions?4(multiprocessEnabled, debugClient)
+eric6.DebugClients.Python.MultiprocessingExtension.ProcessWrapper._bootstrap?5(*args, **kwargs)
+eric6.DebugClients.Python.MultiprocessingExtension._debugClient?8
+eric6.DebugClients.Python.MultiprocessingExtension._originalBootstrap?8
+eric6.DebugClients.Python.MultiprocessingExtension._originalProcess?8
+eric6.DebugClients.Python.MultiprocessingExtension.patchMultiprocessing?4(module, debugClient)
 eric6.DebugClients.Python.PyProfile.PyProfile.dispatch?7
 eric6.DebugClients.Python.PyProfile.PyProfile.dump_stats?4(file)
 eric6.DebugClients.Python.PyProfile.PyProfile.erase?4()
@@ -382,6 +426,16 @@
 eric6.DebugClients.Python.PyProfile.PyProfile.save?4()
 eric6.DebugClients.Python.PyProfile.PyProfile.trace_dispatch_call?4(frame, t)
 eric6.DebugClients.Python.PyProfile.PyProfile?1(basename, timer=None, bias=None)
+eric6.DebugClients.Python.QProcessExtension.QProcessWrapper._origQProcessStartDetached?8
+eric6.DebugClients.Python.QProcessExtension.QProcessWrapper.start?4(*args, **kwargs)
+eric6.DebugClients.Python.QProcessExtension.QProcessWrapper.startDetached?4(*args, **kwargs)
+eric6.DebugClients.Python.QProcessExtension.QProcessWrapper.startDetachedStatic?4(**kwargs)
+eric6.DebugClients.Python.QProcessExtension.QProcessWrapper?1(parent=None)
+eric6.DebugClients.Python.QProcessExtension._debugClient?8
+eric6.DebugClients.Python.QProcessExtension.patchQProcess?4(module, debugClient)
+eric6.DebugClients.Python.SubprocessExtension.PopenWrapper?1(arguments, *args, **kwargs)
+eric6.DebugClients.Python.SubprocessExtension._debugClient?8
+eric6.DebugClients.Python.SubprocessExtension.patchSubprocess?4(module, debugClient)
 eric6.DebugClients.Python.ThreadExtension.DummyThreadWrapper?1(*args, **kwargs)
 eric6.DebugClients.Python.ThreadExtension.QRunnableWrapper?1(*args, **kwargs)
 eric6.DebugClients.Python.ThreadExtension.QThreadWrapper?1(*args, **kwargs)
@@ -389,10 +443,12 @@
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension._bootstrapQThread?5(run)
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.attachThread?4(target=None, args=None, kwargs=None, mainThread=False)
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.dumpThreadList?4()
-eric6.DebugClients.Python.ThreadExtension.ThreadExtension.find_module?4(fullname, path=None)
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.getExecutedFrame?4(frame)
-eric6.DebugClients.Python.ThreadExtension.ThreadExtension.load_module?4(fullname)
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.lockClient?4(blocking=True)
+eric6.DebugClients.Python.ThreadExtension.ThreadExtension.patchGreenlet?4(module)
+eric6.DebugClients.Python.ThreadExtension.ThreadExtension.patchPyThread?4(module)
+eric6.DebugClients.Python.ThreadExtension.ThreadExtension.patchPyThreading?4(module)
+eric6.DebugClients.Python.ThreadExtension.ThreadExtension.patchQThread?4(module)
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.setCurrentThread?4(threadId)
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.threadTerminated?4(threadId)
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.unlockClient?4()
@@ -457,9 +513,8 @@
 eric6.Debugger.CallTraceViewer.CallTraceViewer.on_stopTraceButton_clicked?4()
 eric6.Debugger.CallTraceViewer.CallTraceViewer.setProjectMode?4(enabled)
 eric6.Debugger.CallTraceViewer.CallTraceViewer.sourceFile?7
-eric6.Debugger.CallTraceViewer.CallTraceViewer?1(debugServer, parent=None)
+eric6.Debugger.CallTraceViewer.CallTraceViewer?1(debugServer, debugViewer, parent=None)
 eric6.Debugger.Config.ConfigVarTypeDispStrings?7
-eric6.Debugger.Config.ConfigVarTypeFilters?7
 eric6.Debugger.DebugClientCapabilities.HasAll?7
 eric6.Debugger.DebugClientCapabilities.HasCompleter?7
 eric6.Debugger.DebugClientCapabilities.HasCoverage?7
@@ -476,6 +531,7 @@
 eric6.Debugger.DebugServer.DebugServer.clientClearBreak?7
 eric6.Debugger.DebugServer.DebugServer.clientClearWatch?7
 eric6.Debugger.DebugServer.DebugServer.clientCompletionList?7
+eric6.Debugger.DebugServer.DebugServer.clientDebuggerId?7
 eric6.Debugger.DebugServer.DebugServer.clientDisassembly?7
 eric6.Debugger.DebugServer.DebugServer.clientException?7
 eric6.Debugger.DebugServer.DebugServer.clientExit?7
@@ -510,69 +566,76 @@
 eric6.Debugger.DebugServer.DebugServer.getClientCapabilities?4(clientType)
 eric6.Debugger.DebugServer.DebugServer.getClientInterpreter?4()
 eric6.Debugger.DebugServer.DebugServer.getClientType?4()
+eric6.Debugger.DebugServer.DebugServer.getDebuggerIds?4()
 eric6.Debugger.DebugServer.DebugServer.getExtensions?4(language)
 eric6.Debugger.DebugServer.DebugServer.getHostAddress?4(localhost)
 eric6.Debugger.DebugServer.DebugServer.getSupportedLanguages?4(shellOnly=False)
 eric6.Debugger.DebugServer.DebugServer.getWatchPointModel?4()
+eric6.Debugger.DebugServer.DebugServer.initializeClient?4(debuggerId)
 eric6.Debugger.DebugServer.DebugServer.isClientProcessUp?4()
 eric6.Debugger.DebugServer.DebugServer.isConnected?4()
 eric6.Debugger.DebugServer.DebugServer.isDebugging?4()
+eric6.Debugger.DebugServer.DebugServer.lastClientExited?7
+eric6.Debugger.DebugServer.DebugServer.masterClientConnected?4()
 eric6.Debugger.DebugServer.DebugServer.passiveDebugStarted?7
-eric6.Debugger.DebugServer.DebugServer.passiveStartUp?4(fn, exc)
+eric6.Debugger.DebugServer.DebugServer.passiveStartUp?4(fn, exc, debuggerId)
 eric6.Debugger.DebugServer.DebugServer.preferencesChanged?4()
 eric6.Debugger.DebugServer.DebugServer.registerDebuggerInterface?4(interfaceName, getRegistryData, reregister=False)
 eric6.Debugger.DebugServer.DebugServer.remoteBanner?4()
-eric6.Debugger.DebugServer.DebugServer.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False)
+eric6.Debugger.DebugServer.DebugServer.remoteBreakpoint?4(debuggerId, fn, line, setBreakpoint, cond=None, temp=False)
 eric6.Debugger.DebugServer.DebugServer.remoteCapabilities?4()
-eric6.Debugger.DebugServer.DebugServer.remoteClientDisassembly?4()
-eric6.Debugger.DebugServer.DebugServer.remoteClientSetFilter?4(scope, filterStr)
-eric6.Debugger.DebugServer.DebugServer.remoteClientVariable?4(scope, filterList, var, framenr=0)
-eric6.Debugger.DebugServer.DebugServer.remoteClientVariables?4(scope, filterList, framenr=0)
-eric6.Debugger.DebugServer.DebugServer.remoteCompletion?4(text)
-eric6.Debugger.DebugServer.DebugServer.remoteContinue?4(special=False)
+eric6.Debugger.DebugServer.DebugServer.remoteClientDisassembly?4(debuggerId)
+eric6.Debugger.DebugServer.DebugServer.remoteClientSetFilter?4(debuggerId, scope, filterStr)
+eric6.Debugger.DebugServer.DebugServer.remoteClientStack?4(debuggerId)
+eric6.Debugger.DebugServer.DebugServer.remoteClientVariable?4(debuggerId, scope, filterList, var, framenr=0, maxSize=0)
+eric6.Debugger.DebugServer.DebugServer.remoteClientVariables?4(debuggerId, scope, filterList, framenr=0)
+eric6.Debugger.DebugServer.DebugServer.remoteCompletion?4(debuggerId, text)
+eric6.Debugger.DebugServer.DebugServer.remoteContinue?4(debuggerId, special=False)
 eric6.Debugger.DebugServer.DebugServer.remoteCoverage?4(venvName, fn, argv, wd, env, autoClearShell=True, erase=False, forProject=False, runInConsole=False, clientType="")
 eric6.Debugger.DebugServer.DebugServer.remoteEnvironment?4(env)
-eric6.Debugger.DebugServer.DebugServer.remoteLoad?4(venvName, fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType="", enableCallTrace=False)
-eric6.Debugger.DebugServer.DebugServer.remoteMoveIP?4(line)
+eric6.Debugger.DebugServer.DebugServer.remoteLoad?4(venvName, fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, clientType="", enableCallTrace=False, enableMultiprocess=False, multiprocessNoDebug="")
+eric6.Debugger.DebugServer.DebugServer.remoteMoveIP?4(debuggerId, line)
 eric6.Debugger.DebugServer.DebugServer.remoteProfile?4(venvName, fn, argv, wd, env, autoClearShell=True, erase=False, forProject=False, runInConsole=False, clientType="")
-eric6.Debugger.DebugServer.DebugServer.remoteRawInput?4(s)
-eric6.Debugger.DebugServer.DebugServer.remoteRun?4(venvName, fn, argv, wd, env, autoClearShell=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType="")
-eric6.Debugger.DebugServer.DebugServer.remoteSetThread?4(tid)
-eric6.Debugger.DebugServer.DebugServer.remoteStatement?4(stmt)
-eric6.Debugger.DebugServer.DebugServer.remoteStep?4()
-eric6.Debugger.DebugServer.DebugServer.remoteStepOut?4()
-eric6.Debugger.DebugServer.DebugServer.remoteStepOver?4()
-eric6.Debugger.DebugServer.DebugServer.remoteStepQuit?4()
-eric6.Debugger.DebugServer.DebugServer.remoteThreadList?4()
+eric6.Debugger.DebugServer.DebugServer.remoteRawInput?4(debuggerId, inputString)
+eric6.Debugger.DebugServer.DebugServer.remoteRun?4(venvName, fn, argv, wd, env, autoClearShell=True, forProject=False, runInConsole=False, clientType="")
+eric6.Debugger.DebugServer.DebugServer.remoteSetThread?4(debuggerId, tid)
+eric6.Debugger.DebugServer.DebugServer.remoteStatement?4(debuggerId, stmt)
+eric6.Debugger.DebugServer.DebugServer.remoteStep?4(debuggerId)
+eric6.Debugger.DebugServer.DebugServer.remoteStepOut?4(debuggerId)
+eric6.Debugger.DebugServer.DebugServer.remoteStepOver?4(debuggerId)
+eric6.Debugger.DebugServer.DebugServer.remoteStepQuit?4(debuggerId)
+eric6.Debugger.DebugServer.DebugServer.remoteThreadList?4(debuggerId)
 eric6.Debugger.DebugServer.DebugServer.remoteUTDiscover?4(clientType, forProject, venvName, syspath, workdir, discoveryStart)
 eric6.Debugger.DebugServer.DebugServer.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase, clientType="", forProject=False, venvName="", syspath=None, workdir="", discover=False, discoveryStart="", testCases=None, debug=False)
 eric6.Debugger.DebugServer.DebugServer.remoteUTRun?4(debug=False, failfast=False)
 eric6.Debugger.DebugServer.DebugServer.remoteUTStop?4()
-eric6.Debugger.DebugServer.DebugServer.setCallTraceEnabled?4(on)
+eric6.Debugger.DebugServer.DebugServer.setCallTraceEnabled?4(debuggerId, on)
 eric6.Debugger.DebugServer.DebugServer.setDebugging?4(on)
 eric6.Debugger.DebugServer.DebugServer.shutdownServer?4()
-eric6.Debugger.DebugServer.DebugServer.signalClientBanner?4(version, platform, debugClient, venvName)
-eric6.Debugger.DebugServer.DebugServer.signalClientBreakConditionError?4(filename, lineno)
-eric6.Debugger.DebugServer.DebugServer.signalClientCallTrace?4(isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction)
+eric6.Debugger.DebugServer.DebugServer.signalClientBanner?4(version, platform, venvName)
+eric6.Debugger.DebugServer.DebugServer.signalClientBreakConditionError?4(filename, lineno, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientCallTrace?4(isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction, debuggerId)
 eric6.Debugger.DebugServer.DebugServer.signalClientCapabilities?4(capabilities, clientType, venvName)
-eric6.Debugger.DebugServer.DebugServer.signalClientClearBreak?4(filename, lineno)
-eric6.Debugger.DebugServer.DebugServer.signalClientClearWatch?4(condition)
-eric6.Debugger.DebugServer.DebugServer.signalClientCompletionList?4(completionList, text)
-eric6.Debugger.DebugServer.DebugServer.signalClientDisassembly?4(disassembly)
-eric6.Debugger.DebugServer.DebugServer.signalClientException?4(exceptionType, exceptionMessage, stackTrace)
-eric6.Debugger.DebugServer.DebugServer.signalClientExit?4(status, message="")
-eric6.Debugger.DebugServer.DebugServer.signalClientLine?4(filename, lineno, forStack=False)
-eric6.Debugger.DebugServer.DebugServer.signalClientOutput?4(line)
-eric6.Debugger.DebugServer.DebugServer.signalClientRawInput?4(prompt, echo)
-eric6.Debugger.DebugServer.DebugServer.signalClientSignal?4(message, filename, lineNo, funcName, funcArgs)
-eric6.Debugger.DebugServer.DebugServer.signalClientStack?4(stack)
-eric6.Debugger.DebugServer.DebugServer.signalClientStatement?4(more)
-eric6.Debugger.DebugServer.DebugServer.signalClientSyntaxError?4(message, filename, lineNo, characterNo)
-eric6.Debugger.DebugServer.DebugServer.signalClientThreadList?4(currentId, threadList)
-eric6.Debugger.DebugServer.DebugServer.signalClientThreadSet?4()
-eric6.Debugger.DebugServer.DebugServer.signalClientVariable?4(scope, variables)
-eric6.Debugger.DebugServer.DebugServer.signalClientVariables?4(scope, variables)
-eric6.Debugger.DebugServer.DebugServer.signalClientWatchConditionError?4(condition)
+eric6.Debugger.DebugServer.DebugServer.signalClientClearBreak?4(filename, lineno, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientClearWatch?4(condition, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientCompletionList?4(completionList, text, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientDebuggerId?4(debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientDisassembly?4(disassembly, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientException?4(exceptionType, exceptionMessage, stackTrace, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientExit?4(program, status, message, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientLine?4(filename, lineno, debuggerId, forStack=False)
+eric6.Debugger.DebugServer.DebugServer.signalClientOutput?4(line, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientRawInput?4(prompt, echo, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientSignal?4(message, filename, lineNo, funcName, funcArgs, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientStack?4(stack, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientStatement?4(more, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientSyntaxError?4(message, filename, lineNo, characterNo, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientThreadList?4(currentId, threadList, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientThreadSet?4(debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientVariable?4(scope, variables, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientVariables?4(scope, variables, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalClientWatchConditionError?4(condition, debuggerId)
+eric6.Debugger.DebugServer.DebugServer.signalLastClientExited?4()
 eric6.Debugger.DebugServer.DebugServer.startClient?4(unplanned=True, clType=None, forProject=False, runInConsole=False, venvName="", workingDir=None)
 eric6.Debugger.DebugServer.DebugServer.unregisterDebuggerInterface?4(interfaceName)
 eric6.Debugger.DebugServer.DebugServer.utDiscovered?7
@@ -596,6 +659,8 @@
 eric6.Debugger.DebugUI.DebugUI.exceptionInterrupt?7
 eric6.Debugger.DebugUI.DebugUI.executeMake?7
 eric6.Debugger.DebugUI.DebugUI.getActions?4()
+eric6.Debugger.DebugUI.DebugUI.getDebuggerData?4(debuggerId)
+eric6.Debugger.DebugUI.DebugUI.getSelectedDebuggerId?4()
 eric6.Debugger.DebugUI.DebugUI.initActions?4()
 eric6.Debugger.DebugUI.DebugUI.initMenus?4()
 eric6.Debugger.DebugUI.DebugUI.initToolbars?4(toolbarManager)
@@ -603,19 +668,25 @@
 eric6.Debugger.DebugUI.DebugUI.setArgvHistory?4(argsStr, clearHistories=False, history=None)
 eric6.Debugger.DebugUI.DebugUI.setAutoClearShell?4(autoClearShell)
 eric6.Debugger.DebugUI.DebugUI.setAutoContinue?4(autoContinue)
+eric6.Debugger.DebugUI.DebugUI.setDebugActionsEnabled?4(enable)
 eric6.Debugger.DebugUI.DebugUI.setEnvHistory?4(envStr, clearHistories=False, history=None)
 eric6.Debugger.DebugUI.DebugUI.setExcIgnoreList?4(excIgnoreList)
 eric6.Debugger.DebugUI.DebugUI.setExcList?4(excList)
 eric6.Debugger.DebugUI.DebugUI.setExceptionReporting?4(exceptions)
+eric6.Debugger.DebugUI.DebugUI.setMultiprocessNoDebugHistory?4(noDebugList, clearHistories=False, history=None)
 eric6.Debugger.DebugUI.DebugUI.setTracePython?4(tracePython)
 eric6.Debugger.DebugUI.DebugUI.setWdHistory?4(wdStr, clearHistories=False, history=None)
+eric6.Debugger.DebugUI.DebugUI.showNotification?4(notification)
 eric6.Debugger.DebugUI.DebugUI.shutdown?4()
 eric6.Debugger.DebugUI.DebugUI.shutdownServer?4()
 eric6.Debugger.DebugUI.DebugUI.variablesFilter?4(scope)
 eric6.Debugger.DebugUI.DebugUI?1(ui, vm, debugServer, debugViewer, project)
+eric6.Debugger.DebugViewer.DebugViewer.ThreadIdRole?7
 eric6.Debugger.DebugViewer.DebugViewer.clearCallTrace?4()
 eric6.Debugger.DebugViewer.DebugViewer.currentWidget?4()
-eric6.Debugger.DebugViewer.DebugViewer.handleClientStack?4(stack)
+eric6.Debugger.DebugViewer.DebugViewer.getSelectedDebuggerId?4()
+eric6.Debugger.DebugViewer.DebugViewer.getSelectedDebuggerState?4()
+eric6.Debugger.DebugViewer.DebugViewer.handleClientStack?4(stack, debuggerId)
 eric6.Debugger.DebugViewer.DebugViewer.handleDebuggingStarted?4()
 eric6.Debugger.DebugViewer.DebugViewer.handlePreferencesChanged?4()
 eric6.Debugger.DebugViewer.DebugViewer.handleResetUI?4()
@@ -628,7 +699,7 @@
 eric6.Debugger.DebugViewer.DebugViewer.setGlobalsFilter?4()
 eric6.Debugger.DebugViewer.DebugViewer.setLocalsFilter?4()
 eric6.Debugger.DebugViewer.DebugViewer.setVariablesFilter?4(globalsFilter, localsFilter)
-eric6.Debugger.DebugViewer.DebugViewer.showThreadList?4(currentID, threadList)
+eric6.Debugger.DebugViewer.DebugViewer.showThreadList?4(currentID, threadList, debuggerId)
 eric6.Debugger.DebugViewer.DebugViewer.showVariable?4(vlist, showGlobals)
 eric6.Debugger.DebugViewer.DebugViewer.showVariables?4(vlist, showGlobals)
 eric6.Debugger.DebugViewer.DebugViewer.showVariablesTab?4(showGlobals)
@@ -636,43 +707,45 @@
 eric6.Debugger.DebugViewer.DebugViewer?1(debugServer, parent=None)
 eric6.Debugger.DebuggerInterfaceNone.ClientDefaultCapabilities?7
 eric6.Debugger.DebuggerInterfaceNone.ClientTypeAssociations?7
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.flush?4()
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.getClientCapabilities?4()
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.getDebuggerIds?4()
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.isConnected?4()
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.newConnection?4(sock)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBanner?4()
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpointEnable?4(fn, line, enable)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpointIgnore?4(fn, line, count)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteCapabilities?4()
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteClientSetFilter?4(scope, filterStr)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteClientVariable?4(scope, filterList, var, framenr=0, maxSize=0)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteClientVariables?4(scope, filterList, framenr=0, maxSize=0)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteCompletion?4(text)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteContinue?4(special=False)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpoint?4(debuggerId, fn, line, setBreakpoint, cond=None, temp=False)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpointEnable?4(debuggerId, fn, line, enable)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpointIgnore?4(debuggerId, fn, line, count)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteCapabilities?4(debuggerId)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteClientDisassembly?4(debuggerId)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteClientSetFilter?4(debuggerId, scope, filterStr)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteClientStack?4(debuggerId)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteClientVariable?4(debuggerId, scope, filterList, var, framenr=0, maxSize=0)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteClientVariables?4(debuggerId, scope, filterList, framenr=0, maxSize=0)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteCompletion?4(debuggerId, text)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteContinue?4(debuggerId, special=False)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteCoverage?4(fn, argv, wd, erase=False)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteEnvironment?4(env)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteEval?4(arg)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteMoveIP?4(line)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, enableMultiprocess=False)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteMoveIP?4(debuggerId, line)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteNoDebugList?4(debuggerId, noDebugList)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteProfile?4(fn, argv, wd, erase=False)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteRawInput?4(s)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteRun?4(fn, argv, wd, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteSetThread?4(tid)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStatement?4(stmt)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStep?4()
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStepOut?4()
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStepOver?4()
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStepQuit?4()
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteThreadList?4()
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteRawInput?4(debuggerId, inputString)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteRun?4(fn, argv, wd)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteSetThread?4(debuggerId, tid)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStatement?4(debuggerId, stmt)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStep?4(debuggerId)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStepOut?4(debuggerId)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStepOver?4(debuggerId)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStepQuit?4(debuggerId)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteThreadList?4(debuggerId)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteUTDiscover?4(syspath, workdir, discoveryStart)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase, syspath, workdir, discover, discoveryStart, testCases, debug)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteUTRun?4(debug, failfast)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteUTStop?4()
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpoint?4(cond, setWatch, temp=False)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpointEnable?4(cond, enable)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpointIgnore?4(cond, count)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.setCallTraceEnabled?4(on)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpoint?4(debuggerId, cond, setWatch, temp=False)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpointEnable?4(debuggerId, cond, enable)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpointIgnore?4(debuggerId, cond, count)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.setCallTraceEnabled?4(debuggerId, on)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.shutdown?4()
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemote?4(port, runInConsole, venvName, originalPathString, workingDir=None)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemoteForProject?4(port, runInConsole, venvName, originalPathString, workingDir=None)
@@ -680,43 +753,45 @@
 eric6.Debugger.DebuggerInterfaceNone.createDebuggerInterfaceNone?4(debugServer, passive)
 eric6.Debugger.DebuggerInterfaceNone.getRegistryData?4()
 eric6.Debugger.DebuggerInterfacePython.ClientDefaultCapabilities?7
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.flush?4()
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.getClientCapabilities?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.getDebuggerIds?4()
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.isConnected?4()
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.newConnection?4(sock)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBanner?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpointEnable?4(fn, line, enable)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpointIgnore?4(fn, line, count)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCapabilities?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientDisassembly?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientSetFilter?4(scope, filterStr)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientVariable?4(scope, filterList, var, framenr=0, maxSize=0)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientVariables?4(scope, filterList, framenr=0, maxSize=0)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCompletion?4(text)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteContinue?4(special=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpoint?4(debuggerId, fn, line, setBreakpoint, cond=None, temp=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpointEnable?4(debuggerId, fn, line, enable)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpointIgnore?4(debuggerId, fn, line, count)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCapabilities?4(debuggerId)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientDisassembly?4(debuggerId)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientSetFilter?4(debuggerId, scope, filterStr)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientStack?4(debuggerId)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientVariable?4(debuggerId, scope, filterList, var, framenr=0, maxSize=0)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientVariables?4(debuggerId, scope, filterList, framenr=0, maxSize=0)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCompletion?4(debuggerId, text)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteContinue?4(debuggerId, special=False)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCoverage?4(fn, argv, wd, erase=False)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteEnvironment?4(env)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteMoveIP?4(line)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, enableMultiprocess=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteMoveIP?4(debuggerId, line)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteNoDebugList?4(debuggerId, noDebugList)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteProfile?4(fn, argv, wd, erase=False)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRawInput?4(s)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRun?4(fn, argv, wd, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteSetThread?4(tid)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStatement?4(stmt)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStep?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepOut?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepOver?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepQuit?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteThreadList?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRawInput?4(debuggerId, inputString)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRun?4(fn, argv, wd)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteSetThread?4(debuggerId, tid)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStatement?4(debuggerId, stmt)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStep?4(debuggerId)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepOut?4(debuggerId)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepOver?4(debuggerId)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepQuit?4(debuggerId)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteThreadList?4(debuggerId)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTDiscover?4(syspath, workdir, discoveryStart)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase, syspath, workdir, discover, discoveryStart, testCases, debug)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTRun?4(debug, failfast)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTStop?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpoint?4(cond, setWatch, temp=False)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointEnable?4(cond, enable)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointIgnore?4(cond, count)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.setCallTraceEnabled?4(on)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpoint?4(debuggerId, cond, setWatch, temp=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointEnable?4(debuggerId, cond, enable)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointIgnore?4(debuggerId, cond, count)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.setCallTraceEnabled?4(debuggerId, on)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.shutdown?4()
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemote?4(port, runInConsole, venvName, originalPathString, workingDir=None)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemoteForProject?4(port, runInConsole, venvName, originalPathString, workingDir=None)
@@ -729,7 +804,7 @@
 eric6.Debugger.EditBreakpointDialog.EditBreakpointDialog?1(breakPointId, properties, condHistory, parent=None, name=None, modal=False, addMode=False, filenameHistory=None)
 eric6.Debugger.EditWatchpointDialog.EditWatchpointDialog.getData?4()
 eric6.Debugger.EditWatchpointDialog.EditWatchpointDialog?1(properties, parent=None, name=None, modal=False)
-eric6.Debugger.ExceptionLogger.ExceptionLogger.addException?4(exceptionType, exceptionMessage, stackTrace)
+eric6.Debugger.ExceptionLogger.ExceptionLogger.addException?4(exceptionType, exceptionMessage, stackTrace, debuggerId)
 eric6.Debugger.ExceptionLogger.ExceptionLogger.debuggingStarted?4()
 eric6.Debugger.ExceptionLogger.ExceptionLogger.sourceFile?7
 eric6.Debugger.ExceptionLogger.ExceptionLogger?1(parent=None)
@@ -746,11 +821,10 @@
 eric6.Debugger.StartDialog.StartDialog.getDebugData?4()
 eric6.Debugger.StartDialog.StartDialog.getHistories?4()
 eric6.Debugger.StartDialog.StartDialog.getProfilingData?4()
-eric6.Debugger.StartDialog.StartDialog.getRunData?4()
 eric6.Debugger.StartDialog.StartDialog.historiesModified?4()
 eric6.Debugger.StartDialog.StartDialog.on_buttonBox_clicked?4(button)
 eric6.Debugger.StartDialog.StartDialog.on_modFuncCombo_editTextChanged?4()
-eric6.Debugger.StartDialog.StartDialog?1(caption, lastUsedVenvName, argvList, wdList, envList, exceptions, parent=None, dialogType=0, modfuncList=None, tracePython=False, autoClearShell=True, autoContinue=True, autoFork=False, forkChild=False)
+eric6.Debugger.StartDialog.StartDialog?1(caption, lastUsedVenvName, argvList, wdList, envList, exceptions, parent=None, dialogType=0, modfuncList=None, tracePython=False, autoClearShell=True, autoContinue=True, enableMultiprocess=False, multiprocessNoDebugHistory=None)
 eric6.Debugger.StartHistoryEditDialog.StartHistoryEditDialog.getHistory?4()
 eric6.Debugger.StartHistoryEditDialog.StartHistoryEditDialog.on_deleteAllButton_clicked?4()
 eric6.Debugger.StartHistoryEditDialog.StartHistoryEditDialog.on_deleteButton_clicked?4()
@@ -8065,6 +8139,7 @@
 eric6.QScintilla.MiniEditor.MiniScintilla.focusInEvent?4(event)
 eric6.QScintilla.MiniEditor.MiniScintilla.focusOutEvent?4(event)
 eric6.QScintilla.MiniEditor.MiniScintilla.getFileName?4()
+eric6.QScintilla.MiniEditor.MiniScintilla.keyPressEvent?4(ev)
 eric6.QScintilla.MiniEditor.MiniScintilla.removeTrailingWhitespace?4()
 eric6.QScintilla.MiniEditor.MiniScintilla?1(parent=None)
 eric6.QScintilla.Printer.Printer.formatPage?4(painter, drawing, area, pagenr)
--- a/eric6/APIs/Python3/eric6.bas	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/APIs/Python3/eric6.bas	Thu Dec 17 14:40:06 2020 +0100
@@ -688,6 +688,7 @@
 PluginUninstallWidget QWidget Ui_PluginUninstallDialog
 PluginUninstallWindow E5MainWindow
 PluginWizardDialog QDialog Ui_PluginWizardDialog
+PopenWrapper module.Popen
 PreferencesLexer QObject
 PreferencesLexerError Exception
 PreferencesLexerLanguageError PreferencesLexerError
@@ -699,6 +700,7 @@
 PrintToPdfDialog QDialog Ui_PrintToPdfDialog
 Printer QsciPrinter
 PrinterPage ConfigurationPageBase Ui_PrinterPage
+ProcessWrapper _originalProcess
 ProfileTreeWidgetItem QTreeWidgetItem
 ProgramsDialog QDialog Ui_ProgramsDialog
 Project QObject
@@ -743,6 +745,7 @@
 PythonDisViewer QWidget Ui_PythonDisViewer
 PythonDisViewerModes enum.Enum
 PythonPage ConfigurationPageBase Ui_PythonPage
+QProcessWrapper module.QProcess
 QRegularExpressionWizard QObject
 QRegularExpressionWizardCharactersDialog QDialog Ui_QRegularExpressionWizardCharactersDialog
 QRegularExpressionWizardDialog QDialog
--- a/eric6/DebugClients/Python/ModuleLoader.py	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/DebugClients/Python/ModuleLoader.py	Thu Dec 17 14:40:06 2020 +0100
@@ -123,7 +123,7 @@
                 about what spec to return
             @type module
             @return module spec object pointing to the module loader
-            @type ModuleSpec
+            @rtype ModuleSpec
             """
             if fullname in sys.modules or not self.__dbgClient.debugging:
                 return None
--- a/eric6/DebugClients/Python/MultiProcessDebugExtension.py	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/DebugClients/Python/MultiProcessDebugExtension.py	Thu Dec 17 14:40:06 2020 +0100
@@ -59,7 +59,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newExecl(path, *args):
         """
@@ -86,7 +86,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newExecv(path, args):
         """
@@ -113,7 +113,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newExecve(path, args, env):
         """
@@ -140,7 +140,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newSpawnl(mode, path, *args):
         """
@@ -164,7 +164,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newSpawnv(mode, path, args):
         """
@@ -188,7 +188,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newSpawnve(mode, path, args, env):
         """
@@ -214,7 +214,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newPosixSpawn(path, argv, env, **kwargs):
         """
@@ -238,7 +238,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newForkExec(args, *other_args):
         """
@@ -263,7 +263,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newFork():
         """
@@ -333,7 +333,7 @@
     @param originalName original name of the function to be patched
     @type str
     @return function replacing the original one
-    @type function
+    @rtype function
     """
     def newCreateProcess(appName, cmdline, *args):
         """
--- a/eric6/Debugger/DebugServer.py	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Debugger/DebugServer.py	Thu Dec 17 14:40:06 2020 +0100
@@ -59,13 +59,13 @@
         command is complete and True if it needs more input.
     @signal clientDisassembly(disassembly, debuggerId) emitted after the client
         has sent a disassembly of the code raising an exception
-    @signal clientException(exceptionType, exceptionMessage, stackTrace,
-        debuggerId) emitted after an exception occured on the client side
-    @signal clientSyntaxError(message, filename, linenumber, characternumber,
-        debuggerId) emitted after a syntax error has been detected on the
+    @signal clientException(exceptionType, exceptionMessage, stackTrace, debuggerId)
+        emitted after an exception occured on the client side
+    @signal clientSyntaxError(message, filename, linenumber, characternumber, debuggerId)
+        emitted after a syntax error has been detected on the
         client side
-    @signal clientSignal(message, filename, linenumber, function name,
-        function arguments, debuggerId) emitted after a signal has been
+    @signal clientSignal(message, filename, linenumber, function name, function arguments, debuggerId)
+        emitted after a signal has been
         generated on the client side
     @signal clientExit(str, int, str, bool, str) emitted after the client has
         exited giving the program name, the exit status, an exit message, an
Binary file eric6/Documentation/Help/source.qch has changed
--- a/eric6/Documentation/Help/source.qhp	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Help/source.qhp	Thu Dec 17 14:40:06 2020 +0100
@@ -47,7 +47,12 @@
               <section title="eric6.DebugClients.Python.DebugUtilities" ref="eric6.DebugClients.Python.DebugUtilities.html" />
               <section title="eric6.DebugClients.Python.DebugVariables" ref="eric6.DebugClients.Python.DebugVariables.html" />
               <section title="eric6.DebugClients.Python.FlexCompleter" ref="eric6.DebugClients.Python.FlexCompleter.html" />
+              <section title="eric6.DebugClients.Python.ModuleLoader" ref="eric6.DebugClients.Python.ModuleLoader.html" />
+              <section title="eric6.DebugClients.Python.MultiProcessDebugExtension" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html" />
+              <section title="eric6.DebugClients.Python.MultiprocessingExtension" ref="eric6.DebugClients.Python.MultiprocessingExtension.html" />
               <section title="eric6.DebugClients.Python.PyProfile" ref="eric6.DebugClients.Python.PyProfile.html" />
+              <section title="eric6.DebugClients.Python.QProcessExtension" ref="eric6.DebugClients.Python.QProcessExtension.html" />
+              <section title="eric6.DebugClients.Python.SubprocessExtension" ref="eric6.DebugClients.Python.SubprocessExtension.html" />
               <section title="eric6.DebugClients.Python.ThreadExtension" ref="eric6.DebugClients.Python.ThreadExtension.html" />
               <section title="eric6.DebugClients.Python.eric6dbgstub" ref="eric6.DebugClients.Python.eric6dbgstub.html" />
               <section title="eric6.DebugClients.Python.getpass" ref="eric6.DebugClients.Python.getpass.html" />
@@ -3168,6 +3173,7 @@
       <keyword name="DebugClientBase (Module)" id="DebugClientBase (Module)" ref="eric6.DebugClients.Python.DebugClientBase.html" />
       <keyword name="DebugClientBase.__assembleTestCasesList" id="DebugClientBase.__assembleTestCasesList" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__assembleTestCasesList" />
       <keyword name="DebugClientBase.__clientCapabilities" id="DebugClientBase.__clientCapabilities" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__clientCapabilities" />
+      <keyword name="DebugClientBase.__compileCommand" id="DebugClientBase.__compileCommand" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__compileCommand" />
       <keyword name="DebugClientBase.__compileFileSource" id="DebugClientBase.__compileFileSource" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__compileFileSource" />
       <keyword name="DebugClientBase.__completionList" id="DebugClientBase.__completionList" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__completionList" />
       <keyword name="DebugClientBase.__dumpVariable" id="DebugClientBase.__dumpVariable" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__dumpVariable" />
@@ -3189,7 +3195,6 @@
       <keyword name="DebugClientBase.connectDebugger" id="DebugClientBase.connectDebugger" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.connectDebugger" />
       <keyword name="DebugClientBase.eventLoop" id="DebugClientBase.eventLoop" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.eventLoop" />
       <keyword name="DebugClientBase.eventPoll" id="DebugClientBase.eventPoll" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.eventPoll" />
-      <keyword name="DebugClientBase.fork" id="DebugClientBase.fork" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.fork" />
       <keyword name="DebugClientBase.getCoding" id="DebugClientBase.getCoding" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.getCoding" />
       <keyword name="DebugClientBase.getRunning" id="DebugClientBase.getRunning" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.getRunning" />
       <keyword name="DebugClientBase.handleJsonCommand" id="DebugClientBase.handleJsonCommand" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.handleJsonCommand" />
@@ -3201,6 +3206,7 @@
       <keyword name="DebugClientBase.sendCallTrace" id="DebugClientBase.sendCallTrace" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sendCallTrace" />
       <keyword name="DebugClientBase.sendClearTemporaryBreakpoint" id="DebugClientBase.sendClearTemporaryBreakpoint" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sendClearTemporaryBreakpoint" />
       <keyword name="DebugClientBase.sendClearTemporaryWatch" id="DebugClientBase.sendClearTemporaryWatch" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sendClearTemporaryWatch" />
+      <keyword name="DebugClientBase.sendDebuggerId" id="DebugClientBase.sendDebuggerId" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sendDebuggerId" />
       <keyword name="DebugClientBase.sendException" id="DebugClientBase.sendException" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sendException" />
       <keyword name="DebugClientBase.sendJsonCommand" id="DebugClientBase.sendJsonCommand" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sendJsonCommand" />
       <keyword name="DebugClientBase.sendPassiveStartup" id="DebugClientBase.sendPassiveStartup" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sendPassiveStartup" />
@@ -3214,7 +3220,6 @@
       <keyword name="DebugClientCapabilities (Module)" id="DebugClientCapabilities (Module)" ref="eric6.DebugClients.Python.DebugClientCapabilities.html" />
       <keyword name="DebugClientCapabilities (Module)" id="DebugClientCapabilities (Module)" ref="eric6.Debugger.DebugClientCapabilities.html" />
       <keyword name="DebugClientClose" id="DebugClientClose" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientClose" />
-      <keyword name="DebugClientFork" id="DebugClientFork" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientFork" />
       <keyword name="DebugClientInput" id="DebugClientInput" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientInput" />
       <keyword name="DebugClientSetRecursionLimit" id="DebugClientSetRecursionLimit" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientSetRecursionLimit" />
       <keyword name="DebugClients (Package)" id="DebugClients (Package)" ref="index-eric6.DebugClients.html" />
@@ -3246,6 +3251,7 @@
       <keyword name="DebugServer.__remoteWatchpointEnable" id="DebugServer.__remoteWatchpointEnable" ref="eric6.Debugger.DebugServer.html#DebugServer.__remoteWatchpointEnable" />
       <keyword name="DebugServer.__remoteWatchpointIgnore" id="DebugServer.__remoteWatchpointIgnore" ref="eric6.Debugger.DebugServer.html#DebugServer.__remoteWatchpointIgnore" />
       <keyword name="DebugServer.__restoreBreakpoints" id="DebugServer.__restoreBreakpoints" ref="eric6.Debugger.DebugServer.html#DebugServer.__restoreBreakpoints" />
+      <keyword name="DebugServer.__restoreNoDebugList" id="DebugServer.__restoreNoDebugList" ref="eric6.Debugger.DebugServer.html#DebugServer.__restoreNoDebugList" />
       <keyword name="DebugServer.__restoreWatchpoints" id="DebugServer.__restoreWatchpoints" ref="eric6.Debugger.DebugServer.html#DebugServer.__restoreWatchpoints" />
       <keyword name="DebugServer.__setClientType" id="DebugServer.__setClientType" ref="eric6.Debugger.DebugServer.html#DebugServer.__setClientType" />
       <keyword name="DebugServer.__splitWatchCondition" id="DebugServer.__splitWatchCondition" ref="eric6.Debugger.DebugServer.html#DebugServer.__splitWatchCondition" />
@@ -3264,13 +3270,16 @@
       <keyword name="DebugServer.getClientCapabilities" id="DebugServer.getClientCapabilities" ref="eric6.Debugger.DebugServer.html#DebugServer.getClientCapabilities" />
       <keyword name="DebugServer.getClientInterpreter" id="DebugServer.getClientInterpreter" ref="eric6.Debugger.DebugServer.html#DebugServer.getClientInterpreter" />
       <keyword name="DebugServer.getClientType" id="DebugServer.getClientType" ref="eric6.Debugger.DebugServer.html#DebugServer.getClientType" />
+      <keyword name="DebugServer.getDebuggerIds" id="DebugServer.getDebuggerIds" ref="eric6.Debugger.DebugServer.html#DebugServer.getDebuggerIds" />
       <keyword name="DebugServer.getExtensions" id="DebugServer.getExtensions" ref="eric6.Debugger.DebugServer.html#DebugServer.getExtensions" />
       <keyword name="DebugServer.getHostAddress" id="DebugServer.getHostAddress" ref="eric6.Debugger.DebugServer.html#DebugServer.getHostAddress" />
       <keyword name="DebugServer.getSupportedLanguages" id="DebugServer.getSupportedLanguages" ref="eric6.Debugger.DebugServer.html#DebugServer.getSupportedLanguages" />
       <keyword name="DebugServer.getWatchPointModel" id="DebugServer.getWatchPointModel" ref="eric6.Debugger.DebugServer.html#DebugServer.getWatchPointModel" />
+      <keyword name="DebugServer.initializeClient" id="DebugServer.initializeClient" ref="eric6.Debugger.DebugServer.html#DebugServer.initializeClient" />
       <keyword name="DebugServer.isClientProcessUp" id="DebugServer.isClientProcessUp" ref="eric6.Debugger.DebugServer.html#DebugServer.isClientProcessUp" />
       <keyword name="DebugServer.isConnected" id="DebugServer.isConnected" ref="eric6.Debugger.DebugServer.html#DebugServer.isConnected" />
       <keyword name="DebugServer.isDebugging" id="DebugServer.isDebugging" ref="eric6.Debugger.DebugServer.html#DebugServer.isDebugging" />
+      <keyword name="DebugServer.masterClientConnected" id="DebugServer.masterClientConnected" ref="eric6.Debugger.DebugServer.html#DebugServer.masterClientConnected" />
       <keyword name="DebugServer.passiveStartUp" id="DebugServer.passiveStartUp" ref="eric6.Debugger.DebugServer.html#DebugServer.passiveStartUp" />
       <keyword name="DebugServer.preferencesChanged" id="DebugServer.preferencesChanged" ref="eric6.Debugger.DebugServer.html#DebugServer.preferencesChanged" />
       <keyword name="DebugServer.registerDebuggerInterface" id="DebugServer.registerDebuggerInterface" ref="eric6.Debugger.DebugServer.html#DebugServer.registerDebuggerInterface" />
@@ -3279,6 +3288,7 @@
       <keyword name="DebugServer.remoteCapabilities" id="DebugServer.remoteCapabilities" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteCapabilities" />
       <keyword name="DebugServer.remoteClientDisassembly" id="DebugServer.remoteClientDisassembly" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteClientDisassembly" />
       <keyword name="DebugServer.remoteClientSetFilter" id="DebugServer.remoteClientSetFilter" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteClientSetFilter" />
+      <keyword name="DebugServer.remoteClientStack" id="DebugServer.remoteClientStack" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteClientStack" />
       <keyword name="DebugServer.remoteClientVariable" id="DebugServer.remoteClientVariable" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteClientVariable" />
       <keyword name="DebugServer.remoteClientVariables" id="DebugServer.remoteClientVariables" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteClientVariables" />
       <keyword name="DebugServer.remoteCompletion" id="DebugServer.remoteCompletion" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteCompletion" />
@@ -3311,6 +3321,7 @@
       <keyword name="DebugServer.signalClientClearBreak" id="DebugServer.signalClientClearBreak" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientClearBreak" />
       <keyword name="DebugServer.signalClientClearWatch" id="DebugServer.signalClientClearWatch" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientClearWatch" />
       <keyword name="DebugServer.signalClientCompletionList" id="DebugServer.signalClientCompletionList" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientCompletionList" />
+      <keyword name="DebugServer.signalClientDebuggerId" id="DebugServer.signalClientDebuggerId" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientDebuggerId" />
       <keyword name="DebugServer.signalClientDisassembly" id="DebugServer.signalClientDisassembly" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientDisassembly" />
       <keyword name="DebugServer.signalClientException" id="DebugServer.signalClientException" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientException" />
       <keyword name="DebugServer.signalClientExit" id="DebugServer.signalClientExit" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientExit" />
@@ -3326,6 +3337,7 @@
       <keyword name="DebugServer.signalClientVariable" id="DebugServer.signalClientVariable" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientVariable" />
       <keyword name="DebugServer.signalClientVariables" id="DebugServer.signalClientVariables" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientVariables" />
       <keyword name="DebugServer.signalClientWatchConditionError" id="DebugServer.signalClientWatchConditionError" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientWatchConditionError" />
+      <keyword name="DebugServer.signalLastClientExited" id="DebugServer.signalLastClientExited" ref="eric6.Debugger.DebugServer.html#DebugServer.signalLastClientExited" />
       <keyword name="DebugServer.startClient" id="DebugServer.startClient" ref="eric6.Debugger.DebugServer.html#DebugServer.startClient" />
       <keyword name="DebugServer.unregisterDebuggerInterface" id="DebugServer.unregisterDebuggerInterface" ref="eric6.Debugger.DebugServer.html#DebugServer.unregisterDebuggerInterface" />
       <keyword name="DebugUI" id="DebugUI" ref="eric6.Debugger.DebugUI.html#DebugUI" />
@@ -3366,6 +3378,7 @@
       <keyword name="DebugUI.__getClientDisassembly" id="DebugUI.__getClientDisassembly" ref="eric6.Debugger.DebugUI.html#DebugUI.__getClientDisassembly" />
       <keyword name="DebugUI.__getClientVariables" id="DebugUI.__getClientVariables" ref="eric6.Debugger.DebugUI.html#DebugUI.__getClientVariables" />
       <keyword name="DebugUI.__getThreadList" id="DebugUI.__getThreadList" ref="eric6.Debugger.DebugUI.html#DebugUI.__getThreadList" />
+      <keyword name="DebugUI.__lastClientExited" id="DebugUI.__lastClientExited" ref="eric6.Debugger.DebugUI.html#DebugUI.__lastClientExited" />
       <keyword name="DebugUI.__lastEditorClosed" id="DebugUI.__lastEditorClosed" ref="eric6.Debugger.DebugUI.html#DebugUI.__lastEditorClosed" />
       <keyword name="DebugUI.__moveInstructionPointer" id="DebugUI.__moveInstructionPointer" ref="eric6.Debugger.DebugUI.html#DebugUI.__moveInstructionPointer" />
       <keyword name="DebugUI.__nextBreakpoint" id="DebugUI.__nextBreakpoint" ref="eric6.Debugger.DebugUI.html#DebugUI.__nextBreakpoint" />
@@ -3390,18 +3403,23 @@
       <keyword name="DebugUI.__toggleBreakpoint" id="DebugUI.__toggleBreakpoint" ref="eric6.Debugger.DebugUI.html#DebugUI.__toggleBreakpoint" />
       <keyword name="DebugUI.clearHistories" id="DebugUI.clearHistories" ref="eric6.Debugger.DebugUI.html#DebugUI.clearHistories" />
       <keyword name="DebugUI.getActions" id="DebugUI.getActions" ref="eric6.Debugger.DebugUI.html#DebugUI.getActions" />
+      <keyword name="DebugUI.getDebuggerData" id="DebugUI.getDebuggerData" ref="eric6.Debugger.DebugUI.html#DebugUI.getDebuggerData" />
+      <keyword name="DebugUI.getSelectedDebuggerId" id="DebugUI.getSelectedDebuggerId" ref="eric6.Debugger.DebugUI.html#DebugUI.getSelectedDebuggerId" />
       <keyword name="DebugUI.initActions" id="DebugUI.initActions" ref="eric6.Debugger.DebugUI.html#DebugUI.initActions" />
       <keyword name="DebugUI.initMenus" id="DebugUI.initMenus" ref="eric6.Debugger.DebugUI.html#DebugUI.initMenus" />
       <keyword name="DebugUI.initToolbars" id="DebugUI.initToolbars" ref="eric6.Debugger.DebugUI.html#DebugUI.initToolbars" />
       <keyword name="DebugUI.setArgvHistory" id="DebugUI.setArgvHistory" ref="eric6.Debugger.DebugUI.html#DebugUI.setArgvHistory" />
       <keyword name="DebugUI.setAutoClearShell" id="DebugUI.setAutoClearShell" ref="eric6.Debugger.DebugUI.html#DebugUI.setAutoClearShell" />
       <keyword name="DebugUI.setAutoContinue" id="DebugUI.setAutoContinue" ref="eric6.Debugger.DebugUI.html#DebugUI.setAutoContinue" />
+      <keyword name="DebugUI.setDebugActionsEnabled" id="DebugUI.setDebugActionsEnabled" ref="eric6.Debugger.DebugUI.html#DebugUI.setDebugActionsEnabled" />
       <keyword name="DebugUI.setEnvHistory" id="DebugUI.setEnvHistory" ref="eric6.Debugger.DebugUI.html#DebugUI.setEnvHistory" />
       <keyword name="DebugUI.setExcIgnoreList" id="DebugUI.setExcIgnoreList" ref="eric6.Debugger.DebugUI.html#DebugUI.setExcIgnoreList" />
       <keyword name="DebugUI.setExcList" id="DebugUI.setExcList" ref="eric6.Debugger.DebugUI.html#DebugUI.setExcList" />
       <keyword name="DebugUI.setExceptionReporting" id="DebugUI.setExceptionReporting" ref="eric6.Debugger.DebugUI.html#DebugUI.setExceptionReporting" />
+      <keyword name="DebugUI.setMultiprocessNoDebugHistory" id="DebugUI.setMultiprocessNoDebugHistory" ref="eric6.Debugger.DebugUI.html#DebugUI.setMultiprocessNoDebugHistory" />
       <keyword name="DebugUI.setTracePython" id="DebugUI.setTracePython" ref="eric6.Debugger.DebugUI.html#DebugUI.setTracePython" />
       <keyword name="DebugUI.setWdHistory" id="DebugUI.setWdHistory" ref="eric6.Debugger.DebugUI.html#DebugUI.setWdHistory" />
+      <keyword name="DebugUI.showNotification" id="DebugUI.showNotification" ref="eric6.Debugger.DebugUI.html#DebugUI.showNotification" />
       <keyword name="DebugUI.shutdown" id="DebugUI.shutdown" ref="eric6.Debugger.DebugUI.html#DebugUI.shutdown" />
       <keyword name="DebugUI.shutdownServer" id="DebugUI.shutdownServer" ref="eric6.Debugger.DebugUI.html#DebugUI.shutdownServer" />
       <keyword name="DebugUI.variablesFilter" id="DebugUI.variablesFilter" ref="eric6.Debugger.DebugUI.html#DebugUI.variablesFilter" />
@@ -3411,11 +3429,22 @@
       <keyword name="DebugViewer (Constructor)" id="DebugViewer (Constructor)" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__init__" />
       <keyword name="DebugViewer (Module)" id="DebugViewer (Module)" ref="eric6.Debugger.DebugViewer.html" />
       <keyword name="DebugViewer.__callStackFrameSelected" id="DebugViewer.__callStackFrameSelected" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__callStackFrameSelected" />
+      <keyword name="DebugViewer.__clientDebuggerId" id="DebugViewer.__clientDebuggerId" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__clientDebuggerId" />
+      <keyword name="DebugViewer.__clientException" id="DebugViewer.__clientException" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__clientException" />
+      <keyword name="DebugViewer.__clientExit" id="DebugViewer.__clientExit" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__clientExit" />
+      <keyword name="DebugViewer.__clientLine" id="DebugViewer.__clientLine" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__clientLine" />
+      <keyword name="DebugViewer.__clientSyntaxError" id="DebugViewer.__clientSyntaxError" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__clientSyntaxError" />
+      <keyword name="DebugViewer.__debuggerSelected" id="DebugViewer.__debuggerSelected" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__debuggerSelected" />
       <keyword name="DebugViewer.__frameSelected" id="DebugViewer.__frameSelected" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__frameSelected" />
+      <keyword name="DebugViewer.__removeDebugger" id="DebugViewer.__removeDebugger" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__removeDebugger" />
+      <keyword name="DebugViewer.__setCurrentDebugger" id="DebugViewer.__setCurrentDebugger" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__setCurrentDebugger" />
+      <keyword name="DebugViewer.__setDebuggerIconAndState" id="DebugViewer.__setDebuggerIconAndState" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__setDebuggerIconAndState" />
       <keyword name="DebugViewer.__showSource" id="DebugViewer.__showSource" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__showSource" />
       <keyword name="DebugViewer.__threadSelected" id="DebugViewer.__threadSelected" ref="eric6.Debugger.DebugViewer.html#DebugViewer.__threadSelected" />
       <keyword name="DebugViewer.clearCallTrace" id="DebugViewer.clearCallTrace" ref="eric6.Debugger.DebugViewer.html#DebugViewer.clearCallTrace" />
       <keyword name="DebugViewer.currentWidget" id="DebugViewer.currentWidget" ref="eric6.Debugger.DebugViewer.html#DebugViewer.currentWidget" />
+      <keyword name="DebugViewer.getSelectedDebuggerId" id="DebugViewer.getSelectedDebuggerId" ref="eric6.Debugger.DebugViewer.html#DebugViewer.getSelectedDebuggerId" />
+      <keyword name="DebugViewer.getSelectedDebuggerState" id="DebugViewer.getSelectedDebuggerState" ref="eric6.Debugger.DebugViewer.html#DebugViewer.getSelectedDebuggerState" />
       <keyword name="DebugViewer.handleClientStack" id="DebugViewer.handleClientStack" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleClientStack" />
       <keyword name="DebugViewer.handleDebuggingStarted" id="DebugViewer.handleDebuggingStarted" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleDebuggingStarted" />
       <keyword name="DebugViewer.handlePreferencesChanged" id="DebugViewer.handlePreferencesChanged" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handlePreferencesChanged" />
@@ -3444,8 +3473,8 @@
       <keyword name="DebuggerInterfaceNone" id="DebuggerInterfaceNone" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone" />
       <keyword name="DebuggerInterfaceNone (Constructor)" id="DebuggerInterfaceNone (Constructor)" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.__init__" />
       <keyword name="DebuggerInterfaceNone (Module)" id="DebuggerInterfaceNone (Module)" ref="eric6.Debugger.DebuggerInterfaceNone.html" />
-      <keyword name="DebuggerInterfaceNone.flush" id="DebuggerInterfaceNone.flush" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.flush" />
       <keyword name="DebuggerInterfaceNone.getClientCapabilities" id="DebuggerInterfaceNone.getClientCapabilities" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.getClientCapabilities" />
+      <keyword name="DebuggerInterfaceNone.getDebuggerIds" id="DebuggerInterfaceNone.getDebuggerIds" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.getDebuggerIds" />
       <keyword name="DebuggerInterfaceNone.isConnected" id="DebuggerInterfaceNone.isConnected" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.isConnected" />
       <keyword name="DebuggerInterfaceNone.newConnection" id="DebuggerInterfaceNone.newConnection" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.newConnection" />
       <keyword name="DebuggerInterfaceNone.remoteBanner" id="DebuggerInterfaceNone.remoteBanner" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteBanner" />
@@ -3453,16 +3482,18 @@
       <keyword name="DebuggerInterfaceNone.remoteBreakpointEnable" id="DebuggerInterfaceNone.remoteBreakpointEnable" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteBreakpointEnable" />
       <keyword name="DebuggerInterfaceNone.remoteBreakpointIgnore" id="DebuggerInterfaceNone.remoteBreakpointIgnore" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteBreakpointIgnore" />
       <keyword name="DebuggerInterfaceNone.remoteCapabilities" id="DebuggerInterfaceNone.remoteCapabilities" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteCapabilities" />
+      <keyword name="DebuggerInterfaceNone.remoteClientDisassembly" id="DebuggerInterfaceNone.remoteClientDisassembly" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteClientDisassembly" />
       <keyword name="DebuggerInterfaceNone.remoteClientSetFilter" id="DebuggerInterfaceNone.remoteClientSetFilter" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteClientSetFilter" />
+      <keyword name="DebuggerInterfaceNone.remoteClientStack" id="DebuggerInterfaceNone.remoteClientStack" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteClientStack" />
       <keyword name="DebuggerInterfaceNone.remoteClientVariable" id="DebuggerInterfaceNone.remoteClientVariable" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteClientVariable" />
       <keyword name="DebuggerInterfaceNone.remoteClientVariables" id="DebuggerInterfaceNone.remoteClientVariables" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteClientVariables" />
       <keyword name="DebuggerInterfaceNone.remoteCompletion" id="DebuggerInterfaceNone.remoteCompletion" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteCompletion" />
       <keyword name="DebuggerInterfaceNone.remoteContinue" id="DebuggerInterfaceNone.remoteContinue" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteContinue" />
       <keyword name="DebuggerInterfaceNone.remoteCoverage" id="DebuggerInterfaceNone.remoteCoverage" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteCoverage" />
       <keyword name="DebuggerInterfaceNone.remoteEnvironment" id="DebuggerInterfaceNone.remoteEnvironment" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteEnvironment" />
-      <keyword name="DebuggerInterfaceNone.remoteEval" id="DebuggerInterfaceNone.remoteEval" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteEval" />
       <keyword name="DebuggerInterfaceNone.remoteLoad" id="DebuggerInterfaceNone.remoteLoad" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteLoad" />
       <keyword name="DebuggerInterfaceNone.remoteMoveIP" id="DebuggerInterfaceNone.remoteMoveIP" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteMoveIP" />
+      <keyword name="DebuggerInterfaceNone.remoteNoDebugList" id="DebuggerInterfaceNone.remoteNoDebugList" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteNoDebugList" />
       <keyword name="DebuggerInterfaceNone.remoteProfile" id="DebuggerInterfaceNone.remoteProfile" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteProfile" />
       <keyword name="DebuggerInterfaceNone.remoteRawInput" id="DebuggerInterfaceNone.remoteRawInput" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteRawInput" />
       <keyword name="DebuggerInterfaceNone.remoteRun" id="DebuggerInterfaceNone.remoteRun" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteRun" />
@@ -3487,16 +3518,19 @@
       <keyword name="DebuggerInterfacePython" id="DebuggerInterfacePython" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython" />
       <keyword name="DebuggerInterfacePython (Constructor)" id="DebuggerInterfacePython (Constructor)" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__init__" />
       <keyword name="DebuggerInterfacePython (Module)" id="DebuggerInterfacePython (Module)" ref="eric6.Debugger.DebuggerInterfacePython.html" />
-      <keyword name="DebuggerInterfacePython.__askForkTo" id="DebuggerInterfacePython.__askForkTo" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__askForkTo" />
+      <keyword name="DebuggerInterfacePython.__assignDebuggerId" id="DebuggerInterfacePython.__assignDebuggerId" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__assignDebuggerId" />
+      <keyword name="DebuggerInterfacePython.__flush" id="DebuggerInterfacePython.__flush" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__flush" />
       <keyword name="DebuggerInterfacePython.__handleJsonCommand" id="DebuggerInterfacePython.__handleJsonCommand" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__handleJsonCommand" />
       <keyword name="DebuggerInterfacePython.__identityTranslation" id="DebuggerInterfacePython.__identityTranslation" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__identityTranslation" />
       <keyword name="DebuggerInterfacePython.__parseClientLine" id="DebuggerInterfacePython.__parseClientLine" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__parseClientLine" />
       <keyword name="DebuggerInterfacePython.__remoteTranslation" id="DebuggerInterfacePython.__remoteTranslation" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__remoteTranslation" />
       <keyword name="DebuggerInterfacePython.__sendJsonCommand" id="DebuggerInterfacePython.__sendJsonCommand" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__sendJsonCommand" />
+      <keyword name="DebuggerInterfacePython.__shutdownSocket" id="DebuggerInterfacePython.__shutdownSocket" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__shutdownSocket" />
+      <keyword name="DebuggerInterfacePython.__socketDisconnected" id="DebuggerInterfacePython.__socketDisconnected" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__socketDisconnected" />
       <keyword name="DebuggerInterfacePython.__startProcess" id="DebuggerInterfacePython.__startProcess" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__startProcess" />
       <keyword name="DebuggerInterfacePython.__writeJsonCommandToSocket" id="DebuggerInterfacePython.__writeJsonCommandToSocket" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__writeJsonCommandToSocket" />
-      <keyword name="DebuggerInterfacePython.flush" id="DebuggerInterfacePython.flush" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.flush" />
       <keyword name="DebuggerInterfacePython.getClientCapabilities" id="DebuggerInterfacePython.getClientCapabilities" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.getClientCapabilities" />
+      <keyword name="DebuggerInterfacePython.getDebuggerIds" id="DebuggerInterfacePython.getDebuggerIds" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.getDebuggerIds" />
       <keyword name="DebuggerInterfacePython.isConnected" id="DebuggerInterfacePython.isConnected" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.isConnected" />
       <keyword name="DebuggerInterfacePython.newConnection" id="DebuggerInterfacePython.newConnection" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.newConnection" />
       <keyword name="DebuggerInterfacePython.remoteBanner" id="DebuggerInterfacePython.remoteBanner" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteBanner" />
@@ -3506,6 +3540,7 @@
       <keyword name="DebuggerInterfacePython.remoteCapabilities" id="DebuggerInterfacePython.remoteCapabilities" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteCapabilities" />
       <keyword name="DebuggerInterfacePython.remoteClientDisassembly" id="DebuggerInterfacePython.remoteClientDisassembly" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteClientDisassembly" />
       <keyword name="DebuggerInterfacePython.remoteClientSetFilter" id="DebuggerInterfacePython.remoteClientSetFilter" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteClientSetFilter" />
+      <keyword name="DebuggerInterfacePython.remoteClientStack" id="DebuggerInterfacePython.remoteClientStack" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteClientStack" />
       <keyword name="DebuggerInterfacePython.remoteClientVariable" id="DebuggerInterfacePython.remoteClientVariable" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteClientVariable" />
       <keyword name="DebuggerInterfacePython.remoteClientVariables" id="DebuggerInterfacePython.remoteClientVariables" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteClientVariables" />
       <keyword name="DebuggerInterfacePython.remoteCompletion" id="DebuggerInterfacePython.remoteCompletion" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteCompletion" />
@@ -3514,6 +3549,7 @@
       <keyword name="DebuggerInterfacePython.remoteEnvironment" id="DebuggerInterfacePython.remoteEnvironment" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteEnvironment" />
       <keyword name="DebuggerInterfacePython.remoteLoad" id="DebuggerInterfacePython.remoteLoad" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteLoad" />
       <keyword name="DebuggerInterfacePython.remoteMoveIP" id="DebuggerInterfacePython.remoteMoveIP" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteMoveIP" />
+      <keyword name="DebuggerInterfacePython.remoteNoDebugList" id="DebuggerInterfacePython.remoteNoDebugList" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteNoDebugList" />
       <keyword name="DebuggerInterfacePython.remoteProfile" id="DebuggerInterfacePython.remoteProfile" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteProfile" />
       <keyword name="DebuggerInterfacePython.remoteRawInput" id="DebuggerInterfacePython.remoteRawInput" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteRawInput" />
       <keyword name="DebuggerInterfacePython.remoteRun" id="DebuggerInterfacePython.remoteRun" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteRun" />
@@ -10002,6 +10038,7 @@
       <keyword name="MiniScintilla.focusInEvent" id="MiniScintilla.focusInEvent" ref="eric6.QScintilla.MiniEditor.html#MiniScintilla.focusInEvent" />
       <keyword name="MiniScintilla.focusOutEvent" id="MiniScintilla.focusOutEvent" ref="eric6.QScintilla.MiniEditor.html#MiniScintilla.focusOutEvent" />
       <keyword name="MiniScintilla.getFileName" id="MiniScintilla.getFileName" ref="eric6.QScintilla.MiniEditor.html#MiniScintilla.getFileName" />
+      <keyword name="MiniScintilla.keyPressEvent" id="MiniScintilla.keyPressEvent" ref="eric6.QScintilla.MiniEditor.html#MiniScintilla.keyPressEvent" />
       <keyword name="MiniScintilla.removeTrailingWhitespace" id="MiniScintilla.removeTrailingWhitespace" ref="eric6.QScintilla.MiniEditor.html#MiniScintilla.removeTrailingWhitespace" />
       <keyword name="Miscellaneous (Package)" id="Miscellaneous (Package)" ref="index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.html" />
       <keyword name="MiscellaneousChecker" id="MiscellaneousChecker" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.MiscellaneousChecker.html#MiscellaneousChecker" />
@@ -10098,6 +10135,15 @@
       <keyword name="ModuleItem.paint" id="ModuleItem.paint" ref="eric6.Graphics.ModuleItem.html#ModuleItem.paint" />
       <keyword name="ModuleItem.parseItemDataString" id="ModuleItem.parseItemDataString" ref="eric6.Graphics.ModuleItem.html#ModuleItem.parseItemDataString" />
       <keyword name="ModuleItem.setModel" id="ModuleItem.setModel" ref="eric6.Graphics.ModuleItem.html#ModuleItem.setModel" />
+      <keyword name="ModuleLoader" id="ModuleLoader" ref="eric6.DebugClients.Python.ModuleLoader.html#ModuleLoader" />
+      <keyword name="ModuleLoader (Constructor)" id="ModuleLoader (Constructor)" ref="eric6.DebugClients.Python.ModuleLoader.html#ModuleLoader.__init__" />
+      <keyword name="ModuleLoader (Module)" id="ModuleLoader (Module)" ref="eric6.DebugClients.Python.ModuleLoader.html" />
+      <keyword name="ModuleLoader.__loadModule" id="ModuleLoader.__loadModule" ref="eric6.DebugClients.Python.ModuleLoader.html#ModuleLoader.__loadModule" />
+      <keyword name="ModuleLoader.create_module" id="ModuleLoader.create_module" ref="eric6.DebugClients.Python.ModuleLoader.html#ModuleLoader.create_module" />
+      <keyword name="ModuleLoader.exec_module" id="ModuleLoader.exec_module" ref="eric6.DebugClients.Python.ModuleLoader.html#ModuleLoader.exec_module" />
+      <keyword name="ModuleLoader.find_module" id="ModuleLoader.find_module" ref="eric6.DebugClients.Python.ModuleLoader.html#ModuleLoader.find_module" />
+      <keyword name="ModuleLoader.find_spec" id="ModuleLoader.find_spec" ref="eric6.DebugClients.Python.ModuleLoader.html#ModuleLoader.find_spec" />
+      <keyword name="ModuleLoader.load_module" id="ModuleLoader.load_module" ref="eric6.DebugClients.Python.ModuleLoader.html#ModuleLoader.load_module" />
       <keyword name="ModuleModel" id="ModuleModel" ref="eric6.Graphics.ModuleItem.html#ModuleModel" />
       <keyword name="ModuleModel (Constructor)" id="ModuleModel (Constructor)" ref="eric6.Graphics.ModuleItem.html#ModuleModel.__init__" />
       <keyword name="ModuleModel.addClass" id="ModuleModel.addClass" ref="eric6.Graphics.ModuleItem.html#ModuleModel.addClass" />
@@ -10112,6 +10158,7 @@
       <keyword name="MouseClickDialog.getClick" id="MouseClickDialog.getClick" ref="eric6.Preferences.MouseClickDialog.html#MouseClickDialog.getClick" />
       <keyword name="MouseClickDialog.on_clearButton_clicked" id="MouseClickDialog.on_clearButton_clicked" ref="eric6.Preferences.MouseClickDialog.html#MouseClickDialog.on_clearButton_clicked" />
       <keyword name="MouseUtilities (Module)" id="MouseUtilities (Module)" ref="eric6.Utilities.MouseUtilities.html" />
+      <keyword name="MultiProcessDebugExtension (Module)" id="MultiProcessDebugExtension (Module)" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html" />
       <keyword name="MultiProject" id="MultiProject" ref="eric6.MultiProject.MultiProject.html#MultiProject" />
       <keyword name="MultiProject (Constructor)" id="MultiProject (Constructor)" ref="eric6.MultiProject.MultiProject.html#MultiProject.__init__" />
       <keyword name="MultiProject (Module)" id="MultiProject (Module)" ref="eric6.MultiProject.MultiProject.html" />
@@ -10202,6 +10249,7 @@
       <keyword name="MultiValueDictResolver" id="MultiValueDictResolver" ref="eric6.DebugClients.Python.DebugVariables.html#MultiValueDictResolver" />
       <keyword name="MultiValueDictResolver.getDictionary" id="MultiValueDictResolver.getDictionary" ref="eric6.DebugClients.Python.DebugVariables.html#MultiValueDictResolver.getDictionary" />
       <keyword name="MultiValueDictResolver.resolve" id="MultiValueDictResolver.resolve" ref="eric6.DebugClients.Python.DebugVariables.html#MultiValueDictResolver.resolve" />
+      <keyword name="MultiprocessingExtension (Module)" id="MultiprocessingExtension (Module)" ref="eric6.DebugClients.Python.MultiprocessingExtension.html" />
       <keyword name="MyMemoryEngine" id="MyMemoryEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MyMemoryEngine.html#MyMemoryEngine" />
       <keyword name="MyMemoryEngine (Constructor)" id="MyMemoryEngine (Constructor)" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MyMemoryEngine.html#MyMemoryEngine.__init__" />
       <keyword name="MyMemoryEngine (Module)" id="MyMemoryEngine (Module)" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MyMemoryEngine.html" />
@@ -11032,6 +11080,8 @@
       <keyword name="PluginWizardQRegularExpression (Module)" id="PluginWizardQRegularExpression (Module)" ref="eric6.Plugins.PluginWizardQRegularExpression.html" />
       <keyword name="PluginWizardSetup (Module)" id="PluginWizardSetup (Module)" ref="eric6.Plugins.PluginWizardSetup.html" />
       <keyword name="Plugins (Package)" id="Plugins (Package)" ref="index-eric6.Plugins.html" />
+      <keyword name="PopenWrapper" id="PopenWrapper" ref="eric6.DebugClients.Python.SubprocessExtension.html#PopenWrapper" />
+      <keyword name="PopenWrapper (Constructor)" id="PopenWrapper (Constructor)" ref="eric6.DebugClients.Python.SubprocessExtension.html#PopenWrapper.__init__" />
       <keyword name="Preferences (Package)" id="Preferences (Package)" ref="index-eric6.Preferences.html" />
       <keyword name="PreferencesLexer" id="PreferencesLexer" ref="eric6.Preferences.PreferencesLexer.html#PreferencesLexer" />
       <keyword name="PreferencesLexer (Constructor)" id="PreferencesLexer (Constructor)" ref="eric6.Preferences.PreferencesLexer.html#PreferencesLexer.__init__" />
@@ -11142,6 +11192,8 @@
       <keyword name="PrinterPage.on_printheaderFontButton_clicked" id="PrinterPage.on_printheaderFontButton_clicked" ref="eric6.Preferences.ConfigurationPages.PrinterPage.html#PrinterPage.on_printheaderFontButton_clicked" />
       <keyword name="PrinterPage.polishPage" id="PrinterPage.polishPage" ref="eric6.Preferences.ConfigurationPages.PrinterPage.html#PrinterPage.polishPage" />
       <keyword name="PrinterPage.save" id="PrinterPage.save" ref="eric6.Preferences.ConfigurationPages.PrinterPage.html#PrinterPage.save" />
+      <keyword name="ProcessWrapper" id="ProcessWrapper" ref="eric6.DebugClients.Python.MultiprocessingExtension.html#ProcessWrapper" />
+      <keyword name="ProcessWrapper._bootstrap" id="ProcessWrapper._bootstrap" ref="eric6.DebugClients.Python.MultiprocessingExtension.html#ProcessWrapper._bootstrap" />
       <keyword name="ProfileTreeWidgetItem" id="ProfileTreeWidgetItem" ref="eric6.DataViews.PyProfileDialog.html#ProfileTreeWidgetItem" />
       <keyword name="ProfileTreeWidgetItem.__getNC" id="ProfileTreeWidgetItem.__getNC" ref="eric6.DataViews.PyProfileDialog.html#ProfileTreeWidgetItem.__getNC" />
       <keyword name="ProfileTreeWidgetItem.__lt__" id="ProfileTreeWidgetItem.__lt__" ref="eric6.DataViews.PyProfileDialog.html#ProfileTreeWidgetItem.__lt__" />
@@ -12004,6 +12056,13 @@
       <keyword name="PythonPage (Module)" id="PythonPage (Module)" ref="eric6.Preferences.ConfigurationPages.PythonPage.html" />
       <keyword name="PythonPage.on_refreshButton_clicked" id="PythonPage.on_refreshButton_clicked" ref="eric6.Preferences.ConfigurationPages.PythonPage.html#PythonPage.on_refreshButton_clicked" />
       <keyword name="PythonPage.save" id="PythonPage.save" ref="eric6.Preferences.ConfigurationPages.PythonPage.html#PythonPage.save" />
+      <keyword name="QProcessExtension (Module)" id="QProcessExtension (Module)" ref="eric6.DebugClients.Python.QProcessExtension.html" />
+      <keyword name="QProcessWrapper" id="QProcessWrapper" ref="eric6.DebugClients.Python.QProcessExtension.html#QProcessWrapper" />
+      <keyword name="QProcessWrapper (Constructor)" id="QProcessWrapper (Constructor)" ref="eric6.DebugClients.Python.QProcessExtension.html#QProcessWrapper.__init__" />
+      <keyword name="QProcessWrapper.__startDetached" id="QProcessWrapper.__startDetached" ref="eric6.DebugClients.Python.QProcessExtension.html#QProcessWrapper.__startDetached" />
+      <keyword name="QProcessWrapper.start" id="QProcessWrapper.start" ref="eric6.DebugClients.Python.QProcessExtension.html#QProcessWrapper.start" />
+      <keyword name="QProcessWrapper.startDetached" id="QProcessWrapper.startDetached" ref="eric6.DebugClients.Python.QProcessExtension.html#QProcessWrapper.startDetached" />
+      <keyword name="QProcessWrapper.startDetachedStatic" id="QProcessWrapper.startDetachedStatic" ref="eric6.DebugClients.Python.QProcessExtension.html#QProcessWrapper.startDetachedStatic" />
       <keyword name="QRegularExpressionWizard" id="QRegularExpressionWizard" ref="eric6.Plugins.PluginWizardQRegularExpression.html#QRegularExpressionWizard" />
       <keyword name="QRegularExpressionWizard (Constructor)" id="QRegularExpressionWizard (Constructor)" ref="eric6.Plugins.PluginWizardQRegularExpression.html#QRegularExpressionWizard.__init__" />
       <keyword name="QRegularExpressionWizard (Package)" id="QRegularExpressionWizard (Package)" ref="index-eric6.Plugins.WizardPlugins.QRegularExpressionWizard.html" />
@@ -13442,7 +13501,6 @@
       <keyword name="StartDialog.getDebugData" id="StartDialog.getDebugData" ref="eric6.Debugger.StartDialog.html#StartDialog.getDebugData" />
       <keyword name="StartDialog.getHistories" id="StartDialog.getHistories" ref="eric6.Debugger.StartDialog.html#StartDialog.getHistories" />
       <keyword name="StartDialog.getProfilingData" id="StartDialog.getProfilingData" ref="eric6.Debugger.StartDialog.html#StartDialog.getProfilingData" />
-      <keyword name="StartDialog.getRunData" id="StartDialog.getRunData" ref="eric6.Debugger.StartDialog.html#StartDialog.getRunData" />
       <keyword name="StartDialog.historiesModified" id="StartDialog.historiesModified" ref="eric6.Debugger.StartDialog.html#StartDialog.historiesModified" />
       <keyword name="StartDialog.on_buttonBox_clicked" id="StartDialog.on_buttonBox_clicked" ref="eric6.Debugger.StartDialog.html#StartDialog.on_buttonBox_clicked" />
       <keyword name="StartDialog.on_modFuncCombo_editTextChanged" id="StartDialog.on_modFuncCombo_editTextChanged" ref="eric6.Debugger.StartDialog.html#StartDialog.on_modFuncCombo_editTextChanged" />
@@ -13505,6 +13563,7 @@
       <keyword name="StyleGuide.init_report" id="StyleGuide.init_report" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#StyleGuide.init_report" />
       <keyword name="StyleGuide.input_dir" id="StyleGuide.input_dir" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#StyleGuide.input_dir" />
       <keyword name="StyleGuide.input_file" id="StyleGuide.input_file" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#StyleGuide.input_file" />
+      <keyword name="SubprocessExtension (Module)" id="SubprocessExtension (Module)" ref="eric6.DebugClients.Python.SubprocessExtension.html" />
       <keyword name="SubstyleDefinitionDialog" id="SubstyleDefinitionDialog" ref="eric6.Preferences.SubstyleDefinitionDialog.html#SubstyleDefinitionDialog" />
       <keyword name="SubstyleDefinitionDialog (Constructor)" id="SubstyleDefinitionDialog (Constructor)" ref="eric6.Preferences.SubstyleDefinitionDialog.html#SubstyleDefinitionDialog.__init__" />
       <keyword name="SubstyleDefinitionDialog (Module)" id="SubstyleDefinitionDialog (Module)" ref="eric6.Preferences.SubstyleDefinitionDialog.html" />
@@ -14840,10 +14899,12 @@
       <keyword name="ThreadExtension._bootstrapQThread" id="ThreadExtension._bootstrapQThread" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension._bootstrapQThread" />
       <keyword name="ThreadExtension.attachThread" id="ThreadExtension.attachThread" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.attachThread" />
       <keyword name="ThreadExtension.dumpThreadList" id="ThreadExtension.dumpThreadList" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.dumpThreadList" />
-      <keyword name="ThreadExtension.find_module" id="ThreadExtension.find_module" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.find_module" />
       <keyword name="ThreadExtension.getExecutedFrame" id="ThreadExtension.getExecutedFrame" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.getExecutedFrame" />
-      <keyword name="ThreadExtension.load_module" id="ThreadExtension.load_module" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.load_module" />
       <keyword name="ThreadExtension.lockClient" id="ThreadExtension.lockClient" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.lockClient" />
+      <keyword name="ThreadExtension.patchGreenlet" id="ThreadExtension.patchGreenlet" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.patchGreenlet" />
+      <keyword name="ThreadExtension.patchPyThread" id="ThreadExtension.patchPyThread" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.patchPyThread" />
+      <keyword name="ThreadExtension.patchPyThreading" id="ThreadExtension.patchPyThreading" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.patchPyThreading" />
+      <keyword name="ThreadExtension.patchQThread" id="ThreadExtension.patchQThread" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.patchQThread" />
       <keyword name="ThreadExtension.setCurrentThread" id="ThreadExtension.setCurrentThread" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.setCurrentThread" />
       <keyword name="ThreadExtension.threadTerminated" id="ThreadExtension.threadTerminated" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.threadTerminated" />
       <keyword name="ThreadExtension.unlockClient" id="ThreadExtension.unlockClient" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.unlockClient" />
@@ -17020,6 +17081,7 @@
       <keyword name="_main" id="_main" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_main" />
       <keyword name="_parse_multi_options" id="_parse_multi_options" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_parse_multi_options" />
       <keyword name="_percentReplacementFunc" id="_percentReplacementFunc" ref="eric6.Utilities.__init__.html#_percentReplacementFunc" />
+      <keyword name="_shallPatch" id="_shallPatch" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#_shallPatch" />
       <keyword name="_stylesheet" id="_stylesheet" ref="eric6.UI.CodeDocumentationViewerTemplate.html#_stylesheet" />
       <keyword name="_weakCryptoKeySizeCryptography" id="_weakCryptoKeySizeCryptography" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#_weakCryptoKeySizeCryptography" />
       <keyword name="_weakCryptoKeySizePycrypto" id="_weakCryptoKeySizePycrypto" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#_weakCryptoKeySizePycrypto" />
@@ -17197,10 +17259,16 @@
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsMercurial.html#createConfigurationPage" />
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsPySvn.html#createConfigurationPage" />
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsSubversion.html#createConfigurationPage" />
+      <keyword name="createCreateProcess" id="createCreateProcess" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createCreateProcess" />
       <keyword name="createDebuggerInterfaceNone" id="createDebuggerInterfaceNone" ref="eric6.Debugger.DebuggerInterfaceNone.html#createDebuggerInterfaceNone" />
       <keyword name="createDebuggerInterfacePython3" id="createDebuggerInterfacePython3" ref="eric6.Debugger.DebuggerInterfacePython.html#createDebuggerInterfacePython3" />
       <keyword name="createDefaultConfig" id="createDefaultConfig" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#createDefaultConfig" />
       <keyword name="createDefaultConfig" id="createDefaultConfig" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html#createDefaultConfig" />
+      <keyword name="createExecl" id="createExecl" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createExecl" />
+      <keyword name="createExecv" id="createExecv" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createExecv" />
+      <keyword name="createExecve" id="createExecve" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createExecve" />
+      <keyword name="createFork" id="createFork" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createFork" />
+      <keyword name="createForkExec" id="createForkExec" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createForkExec" />
       <keyword name="createGlobalPluginsDir" id="createGlobalPluginsDir" ref="install.html#createGlobalPluginsDir" />
       <keyword name="createInstallConfig" id="createInstallConfig" ref="install.html#createInstallConfig" />
       <keyword name="createInstallInfo" id="createInstallInfo" ref="install.html#createInstallInfo" />
@@ -17227,7 +17295,11 @@
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_trpreviewer.html#createMainWidget" />
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_uipreviewer.html#createMainWidget" />
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_unittest.html#createMainWidget" />
+      <keyword name="createPosixSpawn" id="createPosixSpawn" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createPosixSpawn" />
       <keyword name="createPyWrapper" id="createPyWrapper" ref="install.html#createPyWrapper" />
+      <keyword name="createSpawnl" id="createSpawnl" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createSpawnl" />
+      <keyword name="createSpawnv" id="createSpawnv" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createSpawnv" />
+      <keyword name="createSpawnve" id="createSpawnve" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#createSpawnve" />
       <keyword name="createTranslatorPage" id="createTranslatorPage" ref="eric6.Plugins.PluginTranslator.html#createTranslatorPage" />
       <keyword name="createWindowsLinks" id="createWindowsLinks" ref="eric6.eric6_post_install.html#createWindowsLinks" />
       <keyword name="createWindowsLinks" id="createWindowsLinks" ref="install.html#createWindowsLinks" />
@@ -17621,6 +17693,7 @@
       <keyword name="isConfigured" id="isConfigured" ref="eric6.Preferences.__init__.html#isConfigured" />
       <keyword name="isCupsAvailable" id="isCupsAvailable" ref="eric6.WebBrowser.WebBrowserTabWidget.html#isCupsAvailable" />
       <keyword name="isDrive" id="isDrive" ref="eric6.Utilities.__init__.html#isDrive" />
+      <keyword name="isExecutable" id="isExecutable" ref="eric6.DebugClients.Python.DebugUtilities.html#isExecutable" />
       <keyword name="isExecutable" id="isExecutable" ref="eric6.Utilities.__init__.html#isExecutable" />
       <keyword name="isGnomeDesktop" id="isGnomeDesktop" ref="eric6.Globals.__init__.html#isGnomeDesktop" />
       <keyword name="isKdeDesktop" id="isKdeDesktop" ref="eric6.Globals.__init__.html#isKdeDesktop" />
@@ -17631,6 +17704,7 @@
       <keyword name="isNumber" id="isNumber" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AstUtilities.html#isNumber" />
       <keyword name="isNumber_1" id="isNumber_1" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AstUtilities.html#isNumber_1" />
       <keyword name="isPipOutdated" id="isPipOutdated" ref="install.html#isPipOutdated" />
+      <keyword name="isPythonProgram" id="isPythonProgram" ref="eric6.DebugClients.Python.DebugUtilities.html#isPythonProgram" />
       <keyword name="isString" id="isString" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AstUtilities.html#isString" />
       <keyword name="isString_1" id="isString_1" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AstUtilities.html#isString_1" />
       <keyword name="isTextFile" id="isTextFile" ref="eric6.Utilities.MimeTypes.html#isTextFile" />
@@ -17639,6 +17713,7 @@
       <keyword name="isValidIPv6Address" id="isValidIPv6Address" ref="eric6.E5Network.__init__.html#isValidIPv6Address" />
       <keyword name="isVisible" id="isVisible" ref="eric6.MicroPython.MicroPythonFileSystemUtilities.html#isVisible" />
       <keyword name="isWaylandSession" id="isWaylandSession" ref="eric6.Globals.__init__.html#isWaylandSession" />
+      <keyword name="isWindowsPlatform" id="isWindowsPlatform" ref="eric6.DebugClients.Python.DebugUtilities.html#isWindowsPlatform" />
       <keyword name="isWindowsPlatform" id="isWindowsPlatform" ref="eric6.Globals.__init__.html#isWindowsPlatform" />
       <keyword name="is_string_literal" id="is_string_literal" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#is_string_literal" />
       <keyword name="isinpath" id="isinpath" ref="eric6.Utilities.__init__.html#isinpath" />
@@ -17713,6 +17788,16 @@
       <keyword name="mute_string" id="mute_string" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#mute_string" />
       <keyword name="namespacePathJoin" id="namespacePathJoin" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#namespacePathJoin" />
       <keyword name="namespacePathSplit" id="namespacePathSplit" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#namespacePathSplit" />
+      <keyword name="newCreateProcess" id="newCreateProcess" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newCreateProcess" />
+      <keyword name="newExecl" id="newExecl" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newExecl" />
+      <keyword name="newExecv" id="newExecv" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newExecv" />
+      <keyword name="newExecve" id="newExecve" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newExecve" />
+      <keyword name="newFork" id="newFork" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newFork" />
+      <keyword name="newForkExec" id="newForkExec" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newForkExec" />
+      <keyword name="newPosixSpawn" id="newPosixSpawn" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newPosixSpawn" />
+      <keyword name="newSpawnl" id="newSpawnl" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newSpawnl" />
+      <keyword name="newSpawnv" id="newSpawnv" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newSpawnv" />
+      <keyword name="newSpawnve" id="newSpawnve" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#newSpawnve" />
       <keyword name="normabsjoinpath" id="normabsjoinpath" ref="eric6.Utilities.__init__.html#normabsjoinpath" />
       <keyword name="normalizeCode" id="normalizeCode" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html#normalizeCode" />
       <keyword name="normalizeCode" id="normalizeCode" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html#normalizeCode" />
@@ -17734,6 +17819,13 @@
       <keyword name="parse_headers" id="parse_headers" ref="eric6.E5Network.E5RFC6266.html#parse_headers" />
       <keyword name="parse_headers_1" id="parse_headers_1" ref="eric6.E5Network.E5RFC6266.html#parse_headers_1" />
       <keyword name="parse_udiff" id="parse_udiff" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#parse_udiff" />
+      <keyword name="patchArgumentStringWindows" id="patchArgumentStringWindows" ref="eric6.DebugClients.Python.DebugUtilities.html#patchArgumentStringWindows" />
+      <keyword name="patchArguments" id="patchArguments" ref="eric6.DebugClients.Python.DebugUtilities.html#patchArguments" />
+      <keyword name="patchModule" id="patchModule" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#patchModule" />
+      <keyword name="patchMultiprocessing" id="patchMultiprocessing" ref="eric6.DebugClients.Python.MultiprocessingExtension.html#patchMultiprocessing" />
+      <keyword name="patchNewProcessFunctions" id="patchNewProcessFunctions" ref="eric6.DebugClients.Python.MultiProcessDebugExtension.html#patchNewProcessFunctions" />
+      <keyword name="patchQProcess" id="patchQProcess" ref="eric6.DebugClients.Python.QProcessExtension.html#patchQProcess" />
+      <keyword name="patchSubprocess" id="patchSubprocess" ref="eric6.DebugClients.Python.SubprocessExtension.html#patchSubprocess" />
       <keyword name="patch_modpython (Module)" id="patch_modpython (Module)" ref="patch_modpython.html" />
       <keyword name="pbkdf2" id="pbkdf2" ref="eric6.Utilities.crypto.py3PBKDF2.html#pbkdf2" />
       <keyword name="pipInstall" id="pipInstall" ref="install.html#pipInstall" />
@@ -17785,6 +17877,7 @@
       <keyword name="qtHandler" id="qtHandler" ref="eric6.E5Gui.E5ErrorMessage.html#qtHandler" />
       <keyword name="question" id="question" ref="eric6.E5Gui.E5MessageBox.html#question" />
       <keyword name="queues (Module)" id="queues (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html" />
+      <keyword name="quoteArgs" id="quoteArgs" ref="eric6.DebugClients.Python.DebugUtilities.html#quoteArgs" />
       <keyword name="rbclbr (Module)" id="rbclbr (Module)" ref="eric6.Utilities.ClassBrowsers.rbclbr.html" />
       <keyword name="readAllFileByteContents" id="readAllFileByteContents" ref="eric6.WebBrowser.Tools.WebBrowserTools.html#readAllFileByteContents" />
       <keyword name="readAllFileContents" id="readAllFileContents" ref="eric6.WebBrowser.Tools.WebBrowserTools.html#readAllFileContents" />
@@ -17816,6 +17909,7 @@
       <keyword name="removeMarkers" id="removeMarkers" ref="eric6.UI.CompareDialog.html#removeMarkers" />
       <keyword name="removePluginDirectories" id="removePluginDirectories" ref="uninstall.html#removePluginDirectories" />
       <keyword name="removeProjectBrowserFlags" id="removeProjectBrowserFlags" ref="eric6.Preferences.__init__.html#removeProjectBrowserFlags" />
+      <keyword name="removeQuotesFromArgs" id="removeQuotesFromArgs" ref="eric6.DebugClients.Python.DebugUtilities.html#removeQuotesFromArgs" />
       <keyword name="removeSearchPath" id="removeSearchPath" ref="eric6.UI.PixmapCache.html#removeSearchPath" />
       <keyword name="renderTabPreview" id="renderTabPreview" ref="eric6.WebBrowser.WebBrowserSnap.html#renderTabPreview" />
       <keyword name="resetInterface" id="resetInterface" ref="eric6.CondaInterface.__init__.html#resetInterface" />
@@ -17914,10 +18008,12 @@
       <keyword name="splitPath" id="splitPath" ref="eric6.Utilities.__init__.html#splitPath" />
       <keyword name="sshNoHostKeyVerification (Module)" id="sshNoHostKeyVerification (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.html" />
       <keyword name="startDebugger" id="startDebugger" ref="eric6.DebugClients.Python.eric6dbgstub.html#startDebugger" />
+      <keyword name="startsWithShebang" id="startsWithShebang" ref="eric6.DebugClients.Python.DebugUtilities.html#startsWithShebang" />
       <keyword name="startswithPath" id="startswithPath" ref="eric6.Utilities.__init__.html#startswithPath" />
       <keyword name="stdin_get_value" id="stdin_get_value" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#stdin_get_value" />
       <keyword name="strGroup" id="strGroup" ref="eric6.Globals.__init__.html#strGroup" />
       <keyword name="strToQByteArray" id="strToQByteArray" ref="eric6.Globals.__init__.html#strToQByteArray" />
+      <keyword name="stringToArgumentsWindows" id="stringToArgumentsWindows" ref="eric6.DebugClients.Python.DebugUtilities.html#stringToArgumentsWindows" />
       <keyword name="strip (Module)" id="strip (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.StripExtension.strip.html" />
       <keyword name="strip_PKCS7_padding" id="strip_PKCS7_padding" ref="eric6.Utilities.crypto.py3AES.html#strip_PKCS7_padding" />
       <keyword name="subversion (Module)" id="subversion (Module)" ref="eric6.Plugins.VcsPlugins.vcsPySvn.subversion.html" />
@@ -18056,7 +18152,12 @@
       <file>eric6.DebugClients.Python.DebugUtilities.html</file>
       <file>eric6.DebugClients.Python.DebugVariables.html</file>
       <file>eric6.DebugClients.Python.FlexCompleter.html</file>
+      <file>eric6.DebugClients.Python.ModuleLoader.html</file>
+      <file>eric6.DebugClients.Python.MultiProcessDebugExtension.html</file>
+      <file>eric6.DebugClients.Python.MultiprocessingExtension.html</file>
       <file>eric6.DebugClients.Python.PyProfile.html</file>
+      <file>eric6.DebugClients.Python.QProcessExtension.html</file>
+      <file>eric6.DebugClients.Python.SubprocessExtension.html</file>
       <file>eric6.DebugClients.Python.ThreadExtension.html</file>
       <file>eric6.DebugClients.Python.eric6dbgstub.html</file>
       <file>eric6.DebugClients.Python.getpass.html</file>
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugBase.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugBase.html	Thu Dec 17 14:40:06 2020 +0100
@@ -738,19 +738,31 @@
 <dd>
 command / code to execute under debugger control
 </dd>
-<dt><i>globalsDict=</i> (dict)</dt>
+<dt><i>globalsDict</i> (dict)</dt>
 <dd>
 dictionary of global variables for cmd
 </dd>
-<dt><i>localsDict=</i> (dict)</dt>
+<dt><i>localsDict</i> (dict)</dt>
 <dd>
 dictionary of local variables for cmd
 </dd>
-<dt><i>debug=</i> (bool)</dt>
+<dt><i>debug</i> (bool)</dt>
 <dd>
 flag if command should run under debugger control
 </dd>
 </dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+exit code of the program
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+int
+</dd>
+</dl>
 <a NAME="DebugBase.setRecursionDepth" ID="DebugBase.setRecursionDepth"></a>
 <h4>DebugBase.setRecursionDepth</h4>
 <b>setRecursionDepth</b>(<i>frame</i>)
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClient.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClient.html	Thu Dec 17 14:40:06 2020 +0100
@@ -52,10 +52,6 @@
 <p>
     Class implementing the client side of the debugger.
 </p>
-<p>
-    This variant of the debugger implements the standard debugger client
-    by subclassing all relevant base classes.
-</p>
 <h3>Derived from</h3>
 DebugClientBase, DebugBase, ThreadExtension
 <h3>Class Attributes</h3>
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html	Thu Dec 17 14:40:06 2020 +0100
@@ -48,10 +48,6 @@
 <td>Replacement for the standard os.close(fd).</td>
 </tr>
 <tr>
-<td><a href="#DebugClientFork">DebugClientFork</a></td>
-<td>Replacement for the standard os.fork().</td>
-</tr>
-<tr>
 <td><a href="#DebugClientInput">DebugClientInput</a></td>
 <td>Replacement for the standard input() builtin.</td>
 </tr>
@@ -115,6 +111,10 @@
 <td>Private method to determine the clients capabilities.</td>
 </tr>
 <tr>
+<td><a href="#DebugClientBase.__compileCommand">__compileCommand</a></td>
+<td>Private method to compile source code.</td>
+</tr>
+<tr>
 <td><a href="#DebugClientBase.__compileFileSource">__compileFileSource</a></td>
 <td>Private method to compile source code read from a file.</td>
 </tr>
@@ -199,10 +199,6 @@
 <td>Public method to poll for events like 'set break point'.</td>
 </tr>
 <tr>
-<td><a href="#DebugClientBase.fork">fork</a></td>
-<td>Public method implementing a fork routine deciding which branch to follow.</td>
-</tr>
-<tr>
 <td><a href="#DebugClientBase.getCoding">getCoding</a></td>
 <td>Public method to return the current coding.</td>
 </tr>
@@ -247,6 +243,10 @@
 <td>Public method to signal the deletion of a temporary watch expression.</td>
 </tr>
 <tr>
+<td><a href="#DebugClientBase.sendDebuggerId">sendDebuggerId</a></td>
+<td>Public method to send the debug client id.</td>
+</tr>
+<tr>
 <td><a href="#DebugClientBase.sendException">sendException</a></td>
 <td>Public method to send information for an exception.</td>
 </tr>
@@ -345,6 +345,34 @@
 client capabilities (integer)
 </dd>
 </dl>
+<a NAME="DebugClientBase.__compileCommand" ID="DebugClientBase.__compileCommand"></a>
+<h4>DebugClientBase.__compileCommand</h4>
+<b>__compileCommand</b>(<i>statement, filename="<string>", mode="exec"</i>)
+
+<p>
+        Private method to compile source code.
+</p>
+<dl>
+
+<dt><i>statement</i> (str)</dt>
+<dd>
+source code string to be compiled
+</dd>
+<dt><i>filename</i> (str)</dt>
+<dd>
+name of the source file
+</dd>
+<dt><i>mode</i> (str)</dt>
+<dd>
+kind of code to be generated (exec or eval)
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+compiled code object (None in case of errors)
+</dd>
+</dl>
 <a NAME="DebugClientBase.__compileFileSource" ID="DebugClientBase.__compileFileSource"></a>
 <h4>DebugClientBase.__compileFileSource</h4>
 <b>__compileFileSource</b>(<i>filename, mode='exec'</i>)
@@ -354,13 +382,13 @@
 </p>
 <dl>
 
-<dt><i>filename</i></dt>
+<dt><i>filename</i> (str)</dt>
 <dd>
-name of the source file (string)
+name of the source file
 </dd>
-<dt><i>mode</i></dt>
+<dt><i>mode</i> (str)</dt>
 <dd>
-kind of code to be generated (string, exec or eval)
+kind of code to be generated (exec or eval)
 </dd>
 </dl>
 <dl>
@@ -406,7 +434,7 @@
 </dd>
 <dt><i>filterList</i> (list of int)</dt>
 <dd>
-the indices of variable types to be filtered
+list of variable types to be filtered
 </dd>
 </dl>
 <a NAME="DebugClientBase.__dumpVariables" ID="DebugClientBase.__dumpVariables"></a>
@@ -426,9 +454,9 @@
 <dd>
 1 to report global variables, 0 for local variables
 </dd>
-<dt><i>filterList</i> (list of int)</dt>
+<dt><i>filterList</i> (list of str)</dt>
 <dd>
-the indices of variable types to be filtered
+list of variable types to be filtered
 </dd>
 </dl>
 <a NAME="DebugClientBase.__extractIndicators" ID="DebugClientBase.__extractIndicators"></a>
@@ -511,9 +539,9 @@
             Variables are only added to the list, if their name do not match
             any of the filter expressions.
 </dd>
-<dt><i>filterList</i> (list of int)</dt>
+<dt><i>filterList</i> (list of str)</dt>
 <dd>
-the indices of variable types to be filtered.
+list of variable types to be filtered.
             Variables are only added to the list, if their type is not
             contained in the filter list.
 </dd>
@@ -726,7 +754,7 @@
 </dl>
 <a NAME="DebugClientBase.connectDebugger" ID="DebugClientBase.connectDebugger"></a>
 <h4>DebugClientBase.connectDebugger</h4>
-<b>connectDebugger</b>(<i>port, remoteAddress=None, redirect=True</i>)
+<b>connectDebugger</b>(<i>port, remoteAddress=None, redirect=True, name=""</i>)
 
 <p>
         Public method to establish a session with the debugger.
@@ -738,19 +766,22 @@
 </p>
 <dl>
 
-<dt><i>port</i></dt>
+<dt><i>port</i> (int)</dt>
 <dd>
-the port number to connect to (int)
+the port number to connect to
 </dd>
-<dt><i>remoteAddress</i></dt>
+<dt><i>remoteAddress</i> (str)</dt>
 <dd>
 the network address of the debug server host
-            (string)
 </dd>
-<dt><i>redirect</i></dt>
+<dt><i>redirect</i> (bool)</dt>
 <dd>
 flag indicating redirection of stdin, stdout and
-            stderr (boolean)
+            stderr
+</dd>
+<dt><i>name</i> (str)</dt>
+<dd>
+name to be attached to the debugger ID
 </dd>
 </dl>
 <a NAME="DebugClientBase.eventLoop" ID="DebugClientBase.eventLoop"></a>
@@ -775,20 +806,6 @@
 <p>
         Public method to poll for events like 'set break point'.
 </p>
-<a NAME="DebugClientBase.fork" ID="DebugClientBase.fork"></a>
-<h4>DebugClientBase.fork</h4>
-<b>fork</b>(<i></i>)
-
-<p>
-        Public method implementing a fork routine deciding which branch
-        to follow.
-</p>
-<dl>
-<dt>Returns:</dt>
-<dd>
-process ID (integer)
-</dd>
-</dl>
 <a NAME="DebugClientBase.getCoding" ID="DebugClientBase.getCoding"></a>
 <h4>DebugClientBase.getCoding</h4>
 <b>getCoding</b>(<i></i>)
@@ -988,6 +1005,21 @@
 condition of the watch expression to be cleared
 </dd>
 </dl>
+<a NAME="DebugClientBase.sendDebuggerId" ID="DebugClientBase.sendDebuggerId"></a>
+<h4>DebugClientBase.sendDebuggerId</h4>
+<b>sendDebuggerId</b>(<i>debuggerId</i>)
+
+<p>
+        Public method to send the debug client id.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+id of this debug client instance (made up of
+            hostname and process ID)
+</dd>
+</dl>
 <a NAME="DebugClientBase.sendException" ID="DebugClientBase.sendException"></a>
 <h4>DebugClientBase.sendException</h4>
 <b>sendException</b>(<i>exceptionType, exceptionMessage, stack</i>)
@@ -1119,48 +1151,55 @@
 </dl>
 <a NAME="DebugClientBase.startDebugger" ID="DebugClientBase.startDebugger"></a>
 <h4>DebugClientBase.startDebugger</h4>
-<b>startDebugger</b>(<i>filename=None, host=None, port=None, enableTrace=True, exceptions=True, tracePython=False, redirect=True</i>)
+<b>startDebugger</b>(<i>filename=None, host=None, port=None, enableTrace=True, exceptions=True, tracePython=False, redirect=True, passive=True, multiprocessSupport=False</i>)
 
 <p>
         Public method used to start the remote debugger.
 </p>
 <dl>
 
-<dt><i>filename</i></dt>
+<dt><i>filename</i> (str)</dt>
 <dd>
-the program to be debugged (string)
+the program to be debugged
 </dd>
-<dt><i>host</i></dt>
+<dt><i>host</i> (str)</dt>
 <dd>
-hostname of the debug server (string)
+hostname of the debug server
 </dd>
-<dt><i>port</i></dt>
+<dt><i>port</i> (int)</dt>
 <dd>
-portnumber of the debug server (int)
+portnumber of the debug server
 </dd>
-<dt><i>enableTrace</i></dt>
+<dt><i>enableTrace</i> (bool)</dt>
 <dd>
-flag to enable the tracing function (boolean)
+flag to enable the tracing function
 </dd>
-<dt><i>exceptions</i></dt>
+<dt><i>exceptions</i> (bool)</dt>
 <dd>
 flag to enable exception reporting of the IDE
-            (boolean)
 </dd>
-<dt><i>tracePython</i></dt>
+<dt><i>tracePython</i> (bool)</dt>
 <dd>
 flag to enable tracing into the Python library
-            (boolean)
 </dd>
-<dt><i>redirect</i></dt>
+<dt><i>redirect</i> (bool)</dt>
 <dd>
 flag indicating redirection of stdin, stdout and
-            stderr (boolean)
+            stderr
+</dd>
+<dt><i>passive</i> (bool)</dt>
+<dd>
+flag indicating a passive debugging session
+</dd>
+<dt><i>multiprocessSupport</i> (bool)</dt>
+<dd>
+flag indicating to enable multiprocess
+            debugging support
 </dd>
 </dl>
 <a NAME="DebugClientBase.startProgInDebugger" ID="DebugClientBase.startProgInDebugger"></a>
 <h4>DebugClientBase.startProgInDebugger</h4>
-<b>startProgInDebugger</b>(<i>progargs, wd='', host=None, port=None, exceptions=True, tracePython=False, redirect=True</i>)
+<b>startProgInDebugger</b>(<i>progargs, wd='', host=None, port=None, exceptions=True, tracePython=False, redirect=True, passive=True, multiprocessSupport=False, codeStr=""</i>)
 
 <p>
         Public method used to start the remote debugger.
@@ -1199,6 +1238,31 @@
 flag indicating redirection of stdin, stdout and
             stderr (boolean)
 </dd>
+<dt><i>passive</i> (bool)</dt>
+<dd>
+flag indicating a passive debugging session
+</dd>
+<dt><i>multiprocessSupport</i> (bool)</dt>
+<dd>
+flag indicating to enable multiprocess
+            debugging support
+</dd>
+<dt><i>codeStr</i> (str)</dt>
+<dd>
+string containing Python code to execute
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+exit code of the debugged program
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+int
+</dd>
 </dl>
 <a NAME="DebugClientBase.writeReady" ID="DebugClientBase.writeReady"></a>
 <h4>DebugClientBase.writeReady</h4>
@@ -1234,22 +1298,6 @@
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 <hr />
-<a NAME="DebugClientFork" ID="DebugClientFork"></a>
-<h2>DebugClientFork</h2>
-<b>DebugClientFork</b>(<i></i>)
-
-<p>
-    Replacement for the standard os.fork().
-</p>
-<dl>
-<dt>Returns:</dt>
-<dd>
-result of the fork() call
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-<hr />
 <a NAME="DebugClientInput" ID="DebugClientInput"></a>
 <h2>DebugClientInput</h2>
 <b>DebugClientInput</b>(<i>prompt=""</i>)
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugConfig.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugConfig.html	Thu Dec 17 14:40:06 2020 +0100
@@ -28,7 +28,7 @@
 <h3>Global Attributes</h3>
 
 <table>
-<tr><td>BatchSize</td></tr><tr><td>ConfigKnownQtTypes</td></tr><tr><td>ConfigQtNames</td></tr><tr><td>ConfigVarTypeStrings</td></tr>
+<tr><td>BatchSize</td></tr><tr><td>ConfigKnownQtTypes</td></tr><tr><td>ConfigQtNames</td></tr><tr><td>SpecialAttributes</td></tr>
 </table>
 <h3>Classes</h3>
 
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugUtilities.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugUtilities.html	Thu Dec 17 14:40:06 2020 +0100
@@ -28,7 +28,7 @@
 <h3>Global Attributes</h3>
 
 <table>
-<tr><td>ArgInfo</td></tr>
+<tr><td>ArgInfo</td></tr><tr><td>PYTHON_NAMES</td></tr>
 </table>
 <h3>Classes</h3>
 
@@ -52,9 +52,45 @@
 <td>Function to get information about arguments passed into a particular frame.</td>
 </tr>
 <tr>
+<td><a href="#isExecutable">isExecutable</a></td>
+<td>Function to check, if the given program is executable.</td>
+</tr>
+<tr>
+<td><a href="#isPythonProgram">isPythonProgram</a></td>
+<td>Function to check, if the given program is a Python interpreter or program.</td>
+</tr>
+<tr>
+<td><a href="#isWindowsPlatform">isWindowsPlatform</a></td>
+<td>Function to check, if this is a Windows platform.</td>
+</tr>
+<tr>
+<td><a href="#patchArgumentStringWindows">patchArgumentStringWindows</a></td>
+<td>Function to patch an argument string for Windows.</td>
+</tr>
+<tr>
+<td><a href="#patchArguments">patchArguments</a></td>
+<td>Function to patch the arguments given to start a program in order to execute it in our debugger.</td>
+</tr>
+<tr>
 <td><a href="#prepareJsonCommand">prepareJsonCommand</a></td>
 <td>Function to prepare a single command or response for transmission to the IDE.</td>
 </tr>
+<tr>
+<td><a href="#quoteArgs">quoteArgs</a></td>
+<td>Function to quote the given list of arguments.</td>
+</tr>
+<tr>
+<td><a href="#removeQuotesFromArgs">removeQuotesFromArgs</a></td>
+<td>Function to remove quotes from the arguments list.</td>
+</tr>
+<tr>
+<td><a href="#startsWithShebang">startsWithShebang</a></td>
+<td>Function to check, if the given program start with a Shebang line.</td>
+</tr>
+<tr>
+<td><a href="#stringToArgumentsWindows">stringToArgumentsWindows</a></td>
+<td>Function to prepare a string of arguments for Windows platform.</td>
+</tr>
 </table>
 <hr />
 <hr />
@@ -182,6 +218,158 @@
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 <hr />
+<a NAME="isExecutable" ID="isExecutable"></a>
+<h2>isExecutable</h2>
+<b>isExecutable</b>(<i>program</i>)
+
+<p>
+    Function to check, if the given program is executable.
+</p>
+<dl>
+
+<dt><i>program</i> (str)</dt>
+<dd>
+program path to be checked
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an executable program
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="isPythonProgram" ID="isPythonProgram"></a>
+<h2>isPythonProgram</h2>
+<b>isPythonProgram</b>(<i>program</i>)
+
+<p>
+    Function to check, if the given program is a Python interpreter or
+    program.
+</p>
+<dl>
+
+<dt><i>program</i> (str)</dt>
+<dd>
+program to be checked
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a Python interpreter or program
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="isWindowsPlatform" ID="isWindowsPlatform"></a>
+<h2>isWindowsPlatform</h2>
+<b>isWindowsPlatform</b>(<i></i>)
+
+<p>
+    Function to check, if this is a Windows platform.
+</p>
+<dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating Windows platform
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="patchArgumentStringWindows" ID="patchArgumentStringWindows"></a>
+<h2>patchArgumentStringWindows</h2>
+<b>patchArgumentStringWindows</b>(<i>debugClient, argStr</i>)
+
+<p>
+    Function to patch an argument string for Windows.
+</p>
+<dl>
+
+<dt><i>debugClient</i> (DebugClient)</dt>
+<dd>
+reference to the debug client object
+</dd>
+<dt><i>argStr</i> (str)</dt>
+<dd>
+argument string
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+patched argument string
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="patchArguments" ID="patchArguments"></a>
+<h2>patchArguments</h2>
+<b>patchArguments</b>(<i>debugClient, arguments, noRedirect=False</i>)
+
+<p>
+    Function to patch the arguments given to start a program in order to
+    execute it in our debugger.
+</p>
+<dl>
+
+<dt><i>debugClient</i> (DebugClient)</dt>
+<dd>
+reference to the debug client object
+</dd>
+<dt><i>arguments</i> (list of str)</dt>
+<dd>
+list of program arguments
+</dd>
+<dt><i>noRedirect</i> (bool)</dt>
+<dd>
+flag indicating to not redirect stdin and stdout
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+modified argument list
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
 <a NAME="prepareJsonCommand" ID="prepareJsonCommand"></a>
 <h2>prepareJsonCommand</h2>
 <b>prepareJsonCommand</b>(<i>method, params</i>)
@@ -215,4 +403,128 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
+<hr />
+<a NAME="quoteArgs" ID="quoteArgs"></a>
+<h2>quoteArgs</h2>
+<b>quoteArgs</b>(<i>args</i>)
+
+<p>
+    Function to quote the given list of arguments.
+</p>
+<dl>
+
+<dt><i>args</i> (list of str)</dt>
+<dd>
+list of arguments to be quoted
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+list of quoted arguments
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="removeQuotesFromArgs" ID="removeQuotesFromArgs"></a>
+<h2>removeQuotesFromArgs</h2>
+<b>removeQuotesFromArgs</b>(<i>args</i>)
+
+<p>
+    Function to remove quotes from the arguments list.
+</p>
+<dl>
+
+<dt><i>args</i> (list of str)</dt>
+<dd>
+list of arguments
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+list of unquoted strings
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="startsWithShebang" ID="startsWithShebang"></a>
+<h2>startsWithShebang</h2>
+<b>startsWithShebang</b>(<i>program</i>)
+
+<p>
+    Function to check, if the given program start with a Shebang line.
+</p>
+<dl>
+
+<dt><i>program</i> (str)</dt>
+<dd>
+program path to be checked
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating an existing and valid shebang line
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="stringToArgumentsWindows" ID="stringToArgumentsWindows"></a>
+<h2>stringToArgumentsWindows</h2>
+<b>stringToArgumentsWindows</b>(<i>args</i>)
+
+<p>
+    Function to prepare a string of arguments for Windows platform.
+</p>
+<dl>
+
+<dt><i>args</i> (str)</dt>
+<dd>
+list of command arguments
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+list of command arguments
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
+<dl>
+
+<dt>Raises <b>RuntimeError</b>:</dt>
+<dd>
+raised to indicate an illegal arguments parsing
+        condition
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
 </body></html>
\ No newline at end of file
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.ThreadExtension.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.ThreadExtension.html	Thu Dec 17 14:40:06 2020 +0100
@@ -70,7 +70,7 @@
 <h2>DummyThreadWrapper</h2>
 
 <p>
-                Wrapper class for threading._DummyThread.
+            Wrapper class for threading._DummyThread.
 </p>
 <h3>Derived from</h3>
 module._DummyThread, ThreadWrapper
@@ -104,7 +104,7 @@
 <b>DummyThreadWrapper</b>(<i>*args, **kwargs</i>)
 
 <p>
-                    Constructor
+                Constructor
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
@@ -113,7 +113,7 @@
 <h2>QRunnableWrapper</h2>
 
 <p>
-                Wrapper class for *.QRunnable.
+            Wrapper class for *.QRunnable.
 </p>
 <h3>Derived from</h3>
 module.QRunnable
@@ -147,7 +147,7 @@
 <b>QRunnableWrapper</b>(<i>*args, **kwargs</i>)
 
 <p>
-                    Constructor
+                Constructor
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
@@ -156,7 +156,7 @@
 <h2>QThreadWrapper</h2>
 
 <p>
-                Wrapper class for *.QThread.
+            Wrapper class for *.QThread.
 </p>
 <h3>Derived from</h3>
 module.QThread
@@ -190,7 +190,7 @@
 <b>QThreadWrapper</b>(<i>*args, **kwargs</i>)
 
 <p>
-                    Constructor
+                Constructor
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
@@ -202,7 +202,7 @@
     Class implementing the thread support for the debugger.
 </p>
 <p>
-    Provides methods for intercepting thread creation, retriving the running
+    Provides methods for intercepting thread creation, retrieving the running
     threads and their name and state.
 </p>
 <h3>Derived from</h3>
@@ -242,20 +242,28 @@
 <td>Public method to send the list of threads.</td>
 </tr>
 <tr>
-<td><a href="#ThreadExtension.find_module">find_module</a></td>
-<td>Public method returning the module loader.</td>
-</tr>
-<tr>
 <td><a href="#ThreadExtension.getExecutedFrame">getExecutedFrame</a></td>
 <td>Public method to return the currently executed frame.</td>
 </tr>
 <tr>
-<td><a href="#ThreadExtension.load_module">load_module</a></td>
-<td>Public method to load a module.</td>
+<td><a href="#ThreadExtension.lockClient">lockClient</a></td>
+<td>Public method to acquire the lock for this client.</td>
+</tr>
+<tr>
+<td><a href="#ThreadExtension.patchGreenlet">patchGreenlet</a></td>
+<td>Public method to patch the 'greenlet' module.</td>
 </tr>
 <tr>
-<td><a href="#ThreadExtension.lockClient">lockClient</a></td>
-<td>Public method to acquire the lock for this client.</td>
+<td><a href="#ThreadExtension.patchPyThread">patchPyThread</a></td>
+<td>Public method to patch Python _thread (Python3) and thread (Python2) modules.</td>
+</tr>
+<tr>
+<td><a href="#ThreadExtension.patchPyThreading">patchPyThreading</a></td>
+<td>Public method to patch the Python threading module.</td>
+</tr>
+<tr>
+<td><a href="#ThreadExtension.patchQThread">patchQThread</a></td>
+<td>Public method to patch the QtCore module's QThread.</td>
 </tr>
 <tr>
 <td><a href="#ThreadExtension.setCurrentThread">setCurrentThread</a></td>
@@ -292,7 +300,7 @@
 <b>_bootstrap</b>(<i>run</i>)
 
 <p>
-                Bootstrap for threading, which reports exceptions correctly.
+            Bootstrap for threading, which reports exceptions correctly.
 </p>
 <dl>
 
@@ -306,7 +314,7 @@
 <b>_bootstrapQThread</b>(<i>run</i>)
 
 <p>
-                Bootstrap for QThread, which reports exceptions correctly.
+            Bootstrap for QThread, which reports exceptions correctly.
 </p>
 <dl>
 
@@ -360,36 +368,6 @@
 <p>
         Public method to send the list of threads.
 </p>
-<a NAME="ThreadExtension.find_module" ID="ThreadExtension.find_module"></a>
-<h4>ThreadExtension.find_module</h4>
-<b>find_module</b>(<i>fullname, path=None</i>)
-
-<p>
-        Public method returning the module loader.
-</p>
-<dl>
-
-<dt><i>fullname</i> (str)</dt>
-<dd>
-name of the module to be loaded
-</dd>
-<dt><i>path</i> (str)</dt>
-<dd>
-path to resolve the module name
-</dd>
-</dl>
-<dl>
-<dt>Returns:</dt>
-<dd>
-module loader object
-</dd>
-</dl>
-<dl>
-<dt>Return Type:</dt>
-<dd>
-object
-</dd>
-</dl>
 <a NAME="ThreadExtension.getExecutedFrame" ID="ThreadExtension.getExecutedFrame"></a>
 <h4>ThreadExtension.getExecutedFrame</h4>
 <b>getExecutedFrame</b>(<i>frame</i>)
@@ -416,32 +394,6 @@
 frame object
 </dd>
 </dl>
-<a NAME="ThreadExtension.load_module" ID="ThreadExtension.load_module"></a>
-<h4>ThreadExtension.load_module</h4>
-<b>load_module</b>(<i>fullname</i>)
-
-<p>
-        Public method to load a module.
-</p>
-<dl>
-
-<dt><i>fullname</i> (str)</dt>
-<dd>
-name of the module to be loaded
-</dd>
-</dl>
-<dl>
-<dt>Returns:</dt>
-<dd>
-reference to the loaded module
-</dd>
-</dl>
-<dl>
-<dt>Return Type:</dt>
-<dd>
-module
-</dd>
-</dl>
 <a NAME="ThreadExtension.lockClient" ID="ThreadExtension.lockClient"></a>
 <h4>ThreadExtension.lockClient</h4>
 <b>lockClient</b>(<i>blocking=True</i>)
@@ -468,6 +420,75 @@
 bool
 </dd>
 </dl>
+<a NAME="ThreadExtension.patchGreenlet" ID="ThreadExtension.patchGreenlet"></a>
+<h4>ThreadExtension.patchGreenlet</h4>
+<b>patchGreenlet</b>(<i>module</i>)
+
+<p>
+        Public method to patch the 'greenlet' module.
+</p>
+<dl>
+
+<dt><i>module</i> (module)</dt>
+<dd>
+reference to the imported module to be patched
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that the module was processed
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<a NAME="ThreadExtension.patchPyThread" ID="ThreadExtension.patchPyThread"></a>
+<h4>ThreadExtension.patchPyThread</h4>
+<b>patchPyThread</b>(<i>module</i>)
+
+<p>
+        Public method to patch Python _thread (Python3) and thread (Python2)
+        modules.
+</p>
+<dl>
+
+<dt><i>module</i> (module)</dt>
+<dd>
+reference to the imported module to be patched
+</dd>
+</dl>
+<a NAME="ThreadExtension.patchPyThreading" ID="ThreadExtension.patchPyThreading"></a>
+<h4>ThreadExtension.patchPyThreading</h4>
+<b>patchPyThreading</b>(<i>module</i>)
+
+<p>
+        Public method to patch the Python threading module.
+</p>
+<dl>
+
+<dt><i>module</i> (module)</dt>
+<dd>
+reference to the imported module to be patched
+</dd>
+</dl>
+<a NAME="ThreadExtension.patchQThread" ID="ThreadExtension.patchQThread"></a>
+<h4>ThreadExtension.patchQThread</h4>
+<b>patchQThread</b>(<i>module</i>)
+
+<p>
+        Public method to patch the QtCore module's QThread.
+</p>
+<dl>
+
+<dt><i>module</i> (module)</dt>
+<dd>
+reference to the imported module to be patched
+</dd>
+</dl>
 <a NAME="ThreadExtension.setCurrentThread" ID="ThreadExtension.setCurrentThread"></a>
 <h4>ThreadExtension.setCurrentThread</h4>
 <b>setCurrentThread</b>(<i>threadId</i>)
@@ -517,7 +538,7 @@
 <h2>ThreadWrapper</h2>
 
 <p>
-                Wrapper class for threading.Thread.
+            Wrapper class for threading.Thread.
 </p>
 <h3>Derived from</h3>
 module.Thread
@@ -551,7 +572,7 @@
 <b>ThreadWrapper</b>(<i>*args, **kwargs</i>)
 
 <p>
-                    Constructor
+                Constructor
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
@@ -560,7 +581,7 @@
 <h2>TimerWrapper</h2>
 
 <p>
-                Wrapper class for threading.(_)Timer.
+            Wrapper class for threading.(_)Timer.
 </p>
 <h3>Derived from</h3>
 timer, ThreadWrapper
@@ -594,7 +615,7 @@
 <b>TimerWrapper</b>(<i>interval, function, *args, **kwargs</i>)
 
 <p>
-                    Constructor
+                Constructor
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
--- a/eric6/Documentation/Source/eric6.Debugger.BreakPointModel.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.BreakPointModel.html	Thu Dec 17 14:40:06 2020 +0100
@@ -169,9 +169,9 @@
 </p>
 <dl>
 
-<dt><i>parent</i></dt>
+<dt><i>parent</i> (QObject)</dt>
 <dd>
-reference to the parent widget (QObject)
+reference to the parent widget
 </dd>
 </dl>
 <a NAME="BreakPointModel.addBreakPoint" ID="BreakPointModel.addBreakPoint"></a>
@@ -183,19 +183,18 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-filename of the breakpoint (string)
+filename of the breakpoint
 </dd>
-<dt><i>line</i></dt>
+<dt><i>line</i> (int)</dt>
 <dd>
-line number of the breakpoint (integer)
+line number of the breakpoint
 </dd>
-<dt><i>properties</i></dt>
+<dt><i>properties</i> (tuple of (str, bool, bool, int))</dt>
 <dd>
 properties of the breakpoint
-            (tuple of condition (string), temporary flag (bool),
-             enabled flag (bool), ignore count (integer))
+            (tuple of condition, temporary flag, enabled flag, ignore count)
 </dd>
 </dl>
 <a NAME="BreakPointModel.columnCount" ID="BreakPointModel.columnCount"></a>
@@ -207,15 +206,21 @@
 </p>
 <dl>
 
-<dt><i>parent</i></dt>
+<dt><i>parent</i> (QModelIndex)</dt>
 <dd>
-reference to parent index (QModelIndex) (Unused)
+reference to parent index (Unused)
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-column count (integer)
+column count
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+int
 </dd>
 </dl>
 <a NAME="BreakPointModel.data" ID="BreakPointModel.data"></a>
@@ -227,13 +232,13 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the requested data (QModelIndex)
+index of the requested data
 </dd>
-<dt><i>role</i></dt>
+<dt><i>role</i> (Qt.ItemDataRole)</dt>
 <dd>
-role of the requested data (Qt.ItemDataRole)
+role of the requested data
 </dd>
 </dl>
 <dl>
@@ -242,6 +247,12 @@
 the requested data
 </dd>
 </dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+any
+</dd>
+</dl>
 <a NAME="BreakPointModel.deleteAll" ID="BreakPointModel.deleteAll"></a>
 <h4>BreakPointModel.deleteAll</h4>
 <b>deleteAll</b>(<i></i>)
@@ -258,9 +269,9 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the breakpoint (QModelIndex)
+index of the breakpoint
 </dd>
 </dl>
 <a NAME="BreakPointModel.deleteBreakPoints" ID="BreakPointModel.deleteBreakPoints"></a>
@@ -272,9 +283,9 @@
 </p>
 <dl>
 
-<dt><i>idxList</i></dt>
+<dt><i>idxList</i> (list of QModelIndex)</dt>
 <dd>
-list of breakpoint indexes (list of QModelIndex)
+list of breakpoint indexes
 </dd>
 </dl>
 <a NAME="BreakPointModel.flags" ID="BreakPointModel.flags"></a>
@@ -286,15 +297,21 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the requested flags (QModelIndex)
+index of the requested flags
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-item flags for the given index (Qt.ItemFlags)
+item flags for the given index
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+Qt.ItemFlags
 </dd>
 </dl>
 <a NAME="BreakPointModel.getBreakPointByIndex" ID="BreakPointModel.getBreakPointByIndex"></a>
@@ -306,18 +323,24 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the breakpoint (QModelIndex)
+index of the breakpoint
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-breakpoint (list of seven values (filename, line number,
+breakpoint (list of six values (filename, line number,
             condition, temporary flag, enabled flag, ignore count))
 </dd>
 </dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of (str, int, str, bool, bool, int)
+</dd>
+</dl>
 <a NAME="BreakPointModel.getBreakPointIndex" ID="BreakPointModel.getBreakPointIndex"></a>
 <h4>BreakPointModel.getBreakPointIndex</h4>
 <b>getBreakPointIndex</b>(<i>fn, lineno</i>)
@@ -328,19 +351,25 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-filename of the breakpoint (string)
+filename of the breakpoint
 </dd>
-<dt><i>lineno</i></dt>
+<dt><i>lineno</i> (int)</dt>
 <dd>
-line number of the breakpoint (integer)
+line number of the breakpoint
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-index (QModelIndex)
+index
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QModelIndex
 </dd>
 </dl>
 <a NAME="BreakPointModel.hasChildren" ID="BreakPointModel.hasChildren"></a>
@@ -352,15 +381,21 @@
 </p>
 <dl>
 
-<dt><i>parent</i></dt>
+<dt><i>parent</i> (QModelIndex)</dt>
 <dd>
-index of parent item (QModelIndex)
+index of parent item
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating the presence of child items (boolean)
+flag indicating the presence of child items
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="BreakPointModel.headerData" ID="BreakPointModel.headerData"></a>
@@ -372,17 +407,17 @@
 </p>
 <dl>
 
-<dt><i>section</i></dt>
+<dt><i>section</i> (int)</dt>
 <dd>
-section number of the requested header data (integer)
+section number of the requested header data
 </dd>
-<dt><i>orientation</i></dt>
+<dt><i>orientation</i> (Qt.Orientation)</dt>
 <dd>
-orientation of the header (Qt.Orientation)
+orientation of the header
 </dd>
-<dt><i>role</i></dt>
+<dt><i>role</i> (Qt.ItemDataRole)</dt>
 <dd>
-role of the requested data (Qt.ItemDataRole)
+role of the requested data
 </dd>
 </dl>
 <dl>
@@ -391,6 +426,12 @@
 header data
 </dd>
 </dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
 <a NAME="BreakPointModel.index" ID="BreakPointModel.index"></a>
 <h4>BreakPointModel.index</h4>
 <b>index</b>(<i>row, column, parent=None</i>)
@@ -400,23 +441,29 @@
 </p>
 <dl>
 
-<dt><i>row</i></dt>
+<dt><i>row</i> (int)</dt>
 <dd>
-row number for the index (integer)
+row number for the index
 </dd>
-<dt><i>column</i></dt>
+<dt><i>column</i> (int)</dt>
 <dd>
-column number for the index (integer)
+column number for the index
 </dd>
-<dt><i>parent</i></dt>
+<dt><i>parent</i> (QModelIndex)</dt>
 <dd>
-index of the parent item (QModelIndex)
+index of the parent item
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-requested index (QModelIndex)
+requested index
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QModelIndex
 </dd>
 </dl>
 <a NAME="BreakPointModel.isBreakPointTemporaryByIndex" ID="BreakPointModel.isBreakPointTemporaryByIndex"></a>
@@ -428,15 +475,21 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the breakpoint to test (QModelIndex)
+index of the breakpoint to test
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating a temporary breakpoint (boolean)
+flag indicating a temporary breakpoint
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="BreakPointModel.parent" ID="BreakPointModel.parent"></a>
@@ -448,15 +501,21 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of item to get parent (QModelIndex)
+index of item to get parent
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-index of parent (QModelIndex)
+index of parent
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QModelIndex
 </dd>
 </dl>
 <a NAME="BreakPointModel.rowCount" ID="BreakPointModel.rowCount"></a>
@@ -468,15 +527,21 @@
 </p>
 <dl>
 
-<dt><i>parent</i></dt>
+<dt><i>parent</i> (QModelIndex)</dt>
 <dd>
-reference to parent index (QModelIndex)
+reference to parent index
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-row count (integer)
+row count
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+int
 </dd>
 </dl>
 <a NAME="BreakPointModel.setBreakPointByIndex" ID="BreakPointModel.setBreakPointByIndex"></a>
@@ -488,23 +553,22 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the breakpoint (QModelIndex)
+index of the breakpoint
 </dd>
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-filename of the breakpoint (string)
+filename of the breakpoint
 </dd>
-<dt><i>line</i></dt>
+<dt><i>line</i> (int)</dt>
 <dd>
-line number of the breakpoint (integer)
+line number of the breakpoint
 </dd>
-<dt><i>properties</i></dt>
+<dt><i>properties</i> (tuple of (str, bool, bool, int))</dt>
 <dd>
 properties of the breakpoint
-            (tuple of condition (string), temporary flag (bool),
-             enabled flag (bool), ignore count (integer))
+            (tuple of condition, temporary flag, enabled flag, ignore count)
 </dd>
 </dl>
 <a NAME="BreakPointModel.setBreakPointEnabledByIndex" ID="BreakPointModel.setBreakPointEnabledByIndex"></a>
@@ -516,13 +580,13 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the breakpoint (QModelIndex)
+index of the breakpoint
 </dd>
-<dt><i>enabled</i></dt>
+<dt><i>enabled</i> (bool)</dt>
 <dd>
-flag giving the enabled state (boolean)
+flag giving the enabled state
 </dd>
 </dl>
 <a NAME="BreakPointModel.setData" ID="BreakPointModel.setData"></a>
@@ -534,23 +598,29 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the changed data (QModelIndex)
+index of the changed data
 </dd>
-<dt><i>value</i></dt>
+<dt><i>value</i> (any)</dt>
 <dd>
 value of the changed data
 </dd>
-<dt><i>role</i></dt>
+<dt><i>role</i> (Qt.ItemDataRole)</dt>
 <dd>
-role of the changed data (Qt.ItemDataRole)
+role of the changed data
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating success (boolean)
+flag indicating success
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Debugger.BreakPointViewer.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.BreakPointViewer.html	Thu Dec 17 14:40:06 2020 +0100
@@ -314,9 +314,9 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of the entry that was double clicked (QModelIndex)
+index of the entry that was double clicked
 </dd>
 </dl>
 <a NAME="BreakPointViewer.__editBreak" ID="BreakPointViewer.__editBreak"></a>
@@ -335,9 +335,9 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of breakpoint to be edited (QModelIndex)
+index of breakpoint to be edited
 </dd>
 </dl>
 <a NAME="BreakPointViewer.__enableAllBreaks" ID="BreakPointViewer.__enableAllBreaks"></a>
@@ -371,15 +371,21 @@
 </p>
 <dl>
 
-<dt><i>sindex</i></dt>
+<dt><i>sindex</i> (QModelIndex)</dt>
 <dd>
-source index to be converted (QModelIndex)
+source index to be converted
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-mapped index (QModelIndex)
+mapped index
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QModelIndex
 </dd>
 </dl>
 <a NAME="BreakPointViewer.__getSelectedItemsCount" ID="BreakPointViewer.__getSelectedItemsCount"></a>
@@ -392,7 +398,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-count of items selected (integer)
+count of items selected
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+int
 </dd>
 </dl>
 <a NAME="BreakPointViewer.__layoutDisplay" ID="BreakPointViewer.__layoutDisplay"></a>
@@ -440,13 +452,13 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index of breakpoint to be enabled/disabled (QModelIndex)
+index of breakpoint to be enabled/disabled
 </dd>
-<dt><i>enabled</i></dt>
+<dt><i>enabled</i> (bool)</dt>
 <dd>
-flag indicating the enabled status to be set (boolean)
+flag indicating the enabled status to be set
 </dd>
 </dl>
 <a NAME="BreakPointViewer.__setRowSelected" ID="BreakPointViewer.__setRowSelected"></a>
@@ -458,13 +470,13 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index determining the row to be selected (QModelIndex)
+index determining the row to be selected
 </dd>
-<dt><i>selected</i></dt>
+<dt><i>selected</i> (bool)</dt>
 <dd>
-flag indicating the action (bool)
+flag indicating the action
 </dd>
 </dl>
 <a NAME="BreakPointViewer.__showBackMenu" ID="BreakPointViewer.__showBackMenu"></a>
@@ -483,9 +495,9 @@
 </p>
 <dl>
 
-<dt><i>coord</i></dt>
+<dt><i>coord</i> (QPoint)</dt>
 <dd>
-the position of the mouse pointer (QPoint)
+the position of the mouse pointer
 </dd>
 </dl>
 <a NAME="BreakPointViewer.__showSource" ID="BreakPointViewer.__showSource"></a>
@@ -504,15 +516,21 @@
 </p>
 <dl>
 
-<dt><i>index</i></dt>
+<dt><i>index</i> (QModelIndex)</dt>
 <dd>
-index to be converted (QModelIndex)
+index to be converted
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-mapped index (QModelIndex)
+mapped index
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QModelIndex
 </dd>
 </dl>
 <a NAME="BreakPointViewer.handleResetUI" ID="BreakPointViewer.handleResetUI"></a>
@@ -531,13 +549,13 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-filename of the breakpoint (string)
+filename of the breakpoint
 </dd>
-<dt><i>lineno</i></dt>
+<dt><i>lineno</i> (int)</dt>
 <dd>
-line number of the breakpoint (integer)
+line number of the breakpoint
 </dd>
 </dl>
 <a NAME="BreakPointViewer.setModel" ID="BreakPointViewer.setModel"></a>
@@ -549,9 +567,9 @@
 </p>
 <dl>
 
-<dt><i>model</i></dt>
+<dt><i>model</i> (BreakPointModel)</dt>
 <dd>
-reference to the breakpoint model (BreakPointModel)
+reference to the breakpoint model
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Debugger.CallStackViewer.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.CallStackViewer.html	Thu Dec 17 14:40:06 2020 +0100
@@ -174,7 +174,7 @@
 </p>
 <dl>
 
-<dt><i>stack</i></dt>
+<dt><i>stack</i> (list of tuples of (str, str, str, str))</dt>
 <dd>
 list of tuples with call stack data (file name,
             line number, function name, formatted argument/values list)
--- a/eric6/Documentation/Source/eric6.Debugger.CallTraceViewer.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.CallTraceViewer.html	Thu Dec 17 14:40:06 2020 +0100
@@ -87,7 +87,7 @@
 </tr>
 <tr>
 <td><a href="#CallTraceViewer.__clientExit">__clientExit</a></td>
-<td>Private slot handling a client exiting.</td>
+<td>Private slot to handle a debug client terminating.</td>
 </tr>
 <tr>
 <td><a href="#CallTraceViewer.__setCallTraceEnabled">__setCallTraceEnabled</a></td>
@@ -142,67 +142,98 @@
 
 <a NAME="CallTraceViewer.__init__" ID="CallTraceViewer.__init__"></a>
 <h4>CallTraceViewer (Constructor)</h4>
-<b>CallTraceViewer</b>(<i>debugServer, parent=None</i>)
+<b>CallTraceViewer</b>(<i>debugServer, debugViewer, parent=None</i>)
 
 <p>
         Constructor
 </p>
 <dl>
 
-<dt><i>debugServer</i></dt>
+<dt><i>debugServer</i> (DebugServer)</dt>
 <dd>
-reference to the debug server object (DebugServer)
+reference to the debug server object
 </dd>
-<dt><i>parent</i></dt>
+<dt><i>debugViewer</i> (DebugViewer)</dt>
 <dd>
-reference to the parent widget (QWidget)
+reference to the debug viewer object
+</dd>
+<dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
 </dd>
 </dl>
 <a NAME="CallTraceViewer.__addCallTraceInfo" ID="CallTraceViewer.__addCallTraceInfo"></a>
 <h4>CallTraceViewer.__addCallTraceInfo</h4>
-<b>__addCallTraceInfo</b>(<i>isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction</i>)
+<b>__addCallTraceInfo</b>(<i>isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction, debuggerId</i>)
 
 <p>
         Private method to add an entry to the call trace viewer.
 </p>
 <dl>
 
-<dt><i>isCall</i></dt>
+<dt><i>isCall</i> (bool)</dt>
 <dd>
-flag indicating a 'call' (boolean)
+flag indicating a 'call'
 </dd>
-<dt><i>fromFile</i></dt>
+<dt><i>fromFile</i> (str)</dt>
 <dd>
-name of the originating file (string)
+name of the originating file
 </dd>
-<dt><i>fromLine</i></dt>
+<dt><i>fromLine</i> (str)</dt>
 <dd>
-line number in the originating file (string)
+line number in the originating file
 </dd>
-<dt><i>fromFunction</i></dt>
+<dt><i>fromFunction</i> (str)</dt>
 <dd>
-name of the originating function (string)
+name of the originating function
 </dd>
-<dt><i>toFile</i></dt>
+<dt><i>toFile</i> (str)</dt>
 <dd>
-name of the target file (string)
+name of the target file
 </dd>
-<dt><i>toLine</i></dt>
+<dt><i>toLine</i> (str)</dt>
 <dd>
-line number in the target file (string)
+line number in the target file
 </dd>
-<dt><i>toFunction</i></dt>
+<dt><i>toFunction</i> (str)</dt>
 <dd>
-name of the target function (string)
+name of the target function
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="CallTraceViewer.__clientExit" ID="CallTraceViewer.__clientExit"></a>
 <h4>CallTraceViewer.__clientExit</h4>
-<b>__clientExit</b>(<i></i>)
+<b>__clientExit</b>(<i>program, status, message, quiet, debuggerId</i>)
 
 <p>
-        Private slot handling a client exiting.
+        Private slot to handle a debug client terminating.
 </p>
+<dl>
+
+<dt><i>program</i> (str)</dt>
+<dd>
+name of the exited program
+</dd>
+<dt><i>status</i> (int)</dt>
+<dd>
+exit code of the debugged program
+</dd>
+<dt><i>message</i> (str)</dt>
+<dd>
+exit message of the debugged program
+</dd>
+<dt><i>quiet</i> (bool)</dt>
+<dd>
+flag indicating to suppress exit info display
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="CallTraceViewer.__setCallTraceEnabled" ID="CallTraceViewer.__setCallTraceEnabled"></a>
 <h4>CallTraceViewer.__setCallTraceEnabled</h4>
 <b>__setCallTraceEnabled</b>(<i>enabled</i>)
@@ -212,9 +243,9 @@
 </p>
 <dl>
 
-<dt><i>enabled</i></dt>
+<dt><i>enabled</i> (bool)</dt>
 <dd>
-flag indicating the new state (boolean)
+flag indicating the new state
 </dd>
 </dl>
 <a NAME="CallTraceViewer.clear" ID="CallTraceViewer.clear"></a>
@@ -234,7 +265,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating the state of the call trace function (boolean)
+flag indicating the state of the call trace function
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="CallTraceViewer.on_callTrace_itemDoubleClicked" ID="CallTraceViewer.on_callTrace_itemDoubleClicked"></a>
@@ -246,13 +283,13 @@
 </p>
 <dl>
 
-<dt><i>item</i></dt>
+<dt><i>item</i> (QTreeWidgetItem)</dt>
 <dd>
-reference to the double clicked item (QTreeWidgetItem)
+reference to the double clicked item
 </dd>
-<dt><i>column</i></dt>
+<dt><i>column</i> (int)</dt>
 <dd>
-column that was double clicked (integer)
+column that was double clicked
 </dd>
 </dl>
 <a NAME="CallTraceViewer.on_clearButton_clicked" ID="CallTraceViewer.on_clearButton_clicked"></a>
@@ -317,9 +354,9 @@
 </p>
 <dl>
 
-<dt><i>enabled</i></dt>
+<dt><i>enabled</i> (bool)</dt>
 <dd>
-flag indicating to enable the project mode (boolean)
+flag indicating to enable the project mode
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Debugger.Config.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.Config.html	Thu Dec 17 14:40:06 2020 +0100
@@ -28,7 +28,7 @@
 <h3>Global Attributes</h3>
 
 <table>
-<tr><td>ConfigVarTypeDispStrings</td></tr><tr><td>ConfigVarTypeFilters</td></tr>
+<tr><td>ConfigVarTypeDispStrings</td></tr>
 </table>
 <h3>Classes</h3>
 
--- a/eric6/Documentation/Source/eric6.Debugger.DebugServer.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.DebugServer.html	Thu Dec 17 14:40:06 2020 +0100
@@ -64,53 +64,58 @@
 <dd>
 emitted after the client reported the call trace
         data (isCall, fromFile, fromLine, fromFunction, toFile, toLine,
-        toFunction)
-</dd>
-<dt>clientBanner(version, platform, dbgclient, venvname)</dt>
+        toFunction, debuggerId)
+</dd>
+<dt>clientBanner(version, platform, venvname)</dt>
 <dd>
 emitted after
         the client banner data was received
 </dd>
-<dt>clientBreakConditionError(fn, lineno)</dt>
-<dd>
-emitted after the client has
-        signaled a syntax error in a breakpoint condition
+<dt>clientBreakConditionError(fn, lineno, debuggerId)</dt>
+<dd>
+emitted after the
+        client has signaled a syntax error in a breakpoint condition
 </dd>
 <dt>clientCapabilities(capabilities, cltype, venvname)</dt>
 <dd>
 emitted after
         the clients capabilities were received
 </dd>
-<dt>clientClearBreak(filename, lineno)</dt>
-<dd>
-emitted after the debug client
-        has decided to clear a temporary breakpoint
-</dd>
-<dt>clientClearWatch(condition)</dt>
-<dd>
-emitted after the debug client
-            has decided to clear a temporary watch expression
-</dd>
-<dt>clientCompletionList(completionList, text)</dt>
+<dt>clientClearBreak(filename, lineno, debuggerId)</dt>
+<dd>
+emitted after the
+        debug client has decided to clear a temporary breakpoint
+</dd>
+<dt>clientClearWatch(condition, debuggerId)</dt>
+<dd>
+emitted after the debug
+        client has decided to clear a temporary watch expression
+</dd>
+<dt>clientCompletionList(completionList, text, debuggerId)</dt>
+<dd>
+emitted
+        after the client the commandline completion list and the reworked
+        search string was received from the client
+</dd>
+<dt>clientDebuggerId(debuggerId)</dt>
+<dd>
+emitted to indicate a newly connected
+        debugger backend
+</dd>
+<dt>clientDisassembly(disassembly, debuggerId)</dt>
 <dd>
 emitted after the client
-        the commandline completion list and the reworked searchstring was
-        received from the client
-</dd>
-<dt>clientDisassembly(disassembly)</dt>
-<dd>
-emitted after the client has sent
-        a disassembly of the code raising an exception
-</dd>
-<dt>clientException(exception)</dt>
-<dd>
-emitted after an exception occured on
-        the client side
-</dd>
-<dt>clientExit(int, str, bool)</dt>
-<dd>
-emitted after the client has exited
-        giving the exit status, an exit message and an indication to be quiet
+        has sent a disassembly of the code raising an exception
+</dd>
+<dt>clientException(exceptionType, exceptionMessage, stackTrace, debuggerId)</dt>
+<dd>
+        emitted after an exception occured on the client side
+</dd>
+<dt>clientExit(str, int, str, bool, str)</dt>
+<dd>
+emitted after the client has
+        exited giving the program name, the exit status, an exit message, an
+        indication to be quiet and the ID of the exited client
 </dd>
 <dt>clientGone(bool)</dt>
 <dd>
@@ -122,10 +127,10 @@
 emitted to signal a change of the
         client interpreter
 </dd>
-<dt>clientLine(filename, lineno, forStack)</dt>
-<dd>
-emitted after the
-        debug client has executed a line of code
+<dt>clientLine(filename, lineno, debuggerId, forStack)</dt>
+<dd>
+emitted after
+        the debug client has executed a line of code
 </dd>
 <dt>clientOutput(str)</dt>
 <dd>
@@ -141,61 +146,66 @@
 emitted after the client has sent some
         output via stdout
 </dd>
-<dt>clientRawInput(prompt, echo)</dt>
-<dd>
-emitted after a raw input request was
-        received
-</dd>
-<dt>clientRawInputSent()</dt>
-<dd>
-emitted after the data was sent to the
-        debug client
-</dd>
-<dt>clientSignal(signal)</dt>
-<dd>
-emitted after a signal has been generated on
-        the client side
-</dd>
-<dt>clientStack(stack)</dt>
-<dd>
-emitted after the debug client has executed a
-        line of code
-</dd>
-<dt>clientStatement(bool)</dt>
-<dd>
-emitted after an interactive command has
-        been executed. The parameter is 0 to indicate that the command is
-        complete and 1 if it needs more input.
-</dd>
-<dt>clientSyntaxError(exception)</dt>
-<dd>
-emitted after a syntax error has been
-        detected on the client side
-</dd>
-<dt>clientThreadList(currentId, threadList)</dt>
-<dd>
-emitted after a thread list
-        has been received
-</dd>
-<dt>clientThreadSet()</dt>
-<dd>
-emitted after the client has acknowledged the
-        change of the current thread
-</dd>
-<dt>clientVariable(scope, variables)</dt>
-<dd>
-emitted after a dump for one class
-        variable has been received
-</dd>
-<dt>clientVariables(scope, variables)</dt>
-<dd>
-emitted after a variables dump
-        has been received
-</dd>
-<dt>clientWatchConditionError(condition)</dt>
+<dt>clientRawInput(prompt, echo, debuggerId)</dt>
+<dd>
+emitted after a raw input
+        request was received
+</dd>
+<dt>clientRawInputSent(debuggerId)</dt>
+<dd>
+emitted after the data was sent
+        to the indicated debug client
+</dd>
+<dt>clientSignal(message, filename, linenumber, function name, function arguments, debuggerId)</dt>
+<dd>
+        emitted after a signal has been
+        generated on the client side
+</dd>
+<dt>clientStack(stack, debuggerId)</dt>
+<dd>
+emitted after the debug client has
+        executed a line of code
+</dd>
+<dt>clientStatement(continue, debuggerId)</dt>
+<dd>
+emitted after an interactive
+        command has been executed. The parameter is False to indicate that the
+        command is complete and True if it needs more input.
+</dd>
+<dt>clientSyntaxError(message, filename, linenumber, characternumber, debuggerId)</dt>
+<dd>
+        emitted after a syntax error has been detected on the
+        client side
+</dd>
+<dt>clientThreadList(currentId, threadList, debuggerId)</dt>
+<dd>
+emitted after
+        a thread list has been received
+</dd>
+<dt>clientThreadSet(debuggerId)</dt>
 <dd>
 emitted after the client has
-        signaled a syntax error in a watch expression
+        acknowledged the change of the current thread
+</dd>
+<dt>clientVariable(scope, variables, debuggerId)</dt>
+<dd>
+emitted after a dump
+        for one class variable has been received
+</dd>
+<dt>clientVariables(scope, variables, debuggerId)</dt>
+<dd>
+emitted after a
+        variables dump has been received
+</dd>
+<dt>clientWatchConditionError(condition, debuggerId)</dt>
+<dd>
+emitted after the
+        client has signaled a syntax error in a watch expression
+</dd>
+<dt>lastClientExited()</dt>
+<dd>
+emitted to indicate that the last connected
+        debug client has terminated
 </dd>
 <dt>passiveDebugStarted(str, bool)</dt>
 <dd>
@@ -369,6 +379,10 @@
 <td>Private method to restore the breakpoints after a restart.</td>
 </tr>
 <tr>
+<td><a href="#DebugServer.__restoreNoDebugList">__restoreNoDebugList</a></td>
+<td>Private method to restore the watch expressions after a restart.</td>
+</tr>
+<tr>
 <td><a href="#DebugServer.__restoreWatchpoints">__restoreWatchpoints</a></td>
 <td>Private method to restore the watch expressions after a restart.</td>
 </tr>
@@ -441,6 +455,10 @@
 <td>Public method to get the currently running debug client type.</td>
 </tr>
 <tr>
+<td><a href="#DebugServer.getDebuggerIds">getDebuggerIds</a></td>
+<td>Public method to return the IDs of the connected debugger backends.</td>
+</tr>
+<tr>
 <td><a href="#DebugServer.getExtensions">getExtensions</a></td>
 <td>Public slot to get the extensions associated with the given language.</td>
 </tr>
@@ -457,6 +475,10 @@
 <td>Public slot to get a reference to the watch expression model object.</td>
 </tr>
 <tr>
+<td><a href="#DebugServer.initializeClient">initializeClient</a></td>
+<td>Public method to initialize a freshly connected debug client.</td>
+</tr>
+<tr>
 <td><a href="#DebugServer.isClientProcessUp">isClientProcessUp</a></td>
 <td>Public method to check, if the debug client process is up.</td>
 </tr>
@@ -469,6 +491,10 @@
 <td>Public method to test, if the debug server is debugging.</td>
 </tr>
 <tr>
+<td><a href="#DebugServer.masterClientConnected">masterClientConnected</a></td>
+<td>Public method to perform actions after the master client has finally established the connection.</td>
+</tr>
+<tr>
 <td><a href="#DebugServer.passiveStartUp">passiveStartUp</a></td>
 <td>Public method to handle a passive debug connection.</td>
 </tr>
@@ -501,6 +527,10 @@
 <td>Public method to set a variables filter list.</td>
 </tr>
 <tr>
+<td><a href="#DebugServer.remoteClientStack">remoteClientStack</a></td>
+<td>Public method to request the stack of the main thread.</td>
+</tr>
+<tr>
 <td><a href="#DebugServer.remoteClientVariable">remoteClientVariable</a></td>
 <td>Public method to request the variables of the debugged program.</td>
 </tr>
@@ -629,6 +659,10 @@
 <td>Public method to process the client auto completion info.</td>
 </tr>
 <tr>
+<td><a href="#DebugServer.signalClientDebuggerId">signalClientDebuggerId</a></td>
+<td>Public method to signal the receipt of a new debugger ID.</td>
+</tr>
+<tr>
 <td><a href="#DebugServer.signalClientDisassembly">signalClientDisassembly</a></td>
 <td>Public method to process the disassembly info from the client.</td>
 </tr>
@@ -666,7 +700,7 @@
 </tr>
 <tr>
 <td><a href="#DebugServer.signalClientSyntaxError">signalClientSyntaxError</a></td>
-<td>Public method to process the syntax error info from the client.</td>
+<td>Public method to process a syntax error info from the client.</td>
 </tr>
 <tr>
 <td><a href="#DebugServer.signalClientThreadList">signalClientThreadList</a></td>
@@ -689,6 +723,10 @@
 <td>Public method to process the client watch expression error info.</td>
 </tr>
 <tr>
+<td><a href="#DebugServer.signalLastClientExited">signalLastClientExited</a></td>
+<td>Public method to process the last client exit event.</td>
+</tr>
+<tr>
 <td><a href="#DebugServer.startClient">startClient</a></td>
 <td>Public method to start a debug client.</td>
 </tr>
@@ -724,46 +762,56 @@
 </dl>
 <a NAME="DebugServer.__addBreakPoints" ID="DebugServer.__addBreakPoints"></a>
 <h4>DebugServer.__addBreakPoints</h4>
-<b>__addBreakPoints</b>(<i>parentIndex, start, end</i>)
+<b>__addBreakPoints</b>(<i>parentIndex, start, end, debuggerId=""</i>)
 
 <p>
         Private slot to add breakpoints.
 </p>
 <dl>
 
-<dt><i>parentIndex</i></dt>
-<dd>
-index of parent item (QModelIndex)
-</dd>
-<dt><i>start</i></dt>
-<dd>
-start row (integer)
-</dd>
-<dt><i>end</i></dt>
-<dd>
-end row (integer)
+<dt><i>parentIndex</i> (QModelIndex)</dt>
+<dd>
+index of parent item
+</dd>
+<dt><i>start</i> (int)</dt>
+<dd>
+start row
+</dd>
+<dt><i>end</i> (int)</dt>
+<dd>
+end row
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend to send to. If this is
+            empty, they will be broadcast to all connected backends.
 </dd>
 </dl>
 <a NAME="DebugServer.__addWatchPoints" ID="DebugServer.__addWatchPoints"></a>
 <h4>DebugServer.__addWatchPoints</h4>
-<b>__addWatchPoints</b>(<i>parentIndex, start, end</i>)
+<b>__addWatchPoints</b>(<i>parentIndex, start, end, debuggerId=""</i>)
 
 <p>
         Private slot to set a watch expression.
 </p>
 <dl>
 
-<dt><i>parentIndex</i></dt>
-<dd>
-index of parent item (QModelIndex)
-</dd>
-<dt><i>start</i></dt>
-<dd>
-start row (integer)
-</dd>
-<dt><i>end</i></dt>
-<dd>
-end row (integer)
+<dt><i>parentIndex</i> (QModelIndex)</dt>
+<dd>
+index of parent item
+</dd>
+<dt><i>start</i> (int)</dt>
+<dd>
+start row
+</dd>
+<dt><i>end</i> (int)</dt>
+<dd>
+end row
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend to send to. If this is
+            empty, they will be broadcast to all connected backends.
 </dd>
 </dl>
 <a NAME="DebugServer.__breakPointDataAboutToBeChanged" ID="DebugServer.__breakPointDataAboutToBeChanged"></a>
@@ -776,13 +824,13 @@
 </p>
 <dl>
 
-<dt><i>startIndex</i></dt>
-<dd>
-start index of the rows to be changed (QModelIndex)
-</dd>
-<dt><i>endIndex</i></dt>
-<dd>
-end index of the rows to be changed (QModelIndex)
+<dt><i>startIndex</i> (QModelIndex)</dt>
+<dd>
+start index of the rows to be changed
+</dd>
+<dt><i>endIndex</i> (QModelIndex)</dt>
+<dd>
+end index of the rows to be changed
 </dd>
 </dl>
 <a NAME="DebugServer.__changeBreakPoints" ID="DebugServer.__changeBreakPoints"></a>
@@ -794,13 +842,13 @@
 </p>
 <dl>
 
-<dt><i>startIndex</i></dt>
-<dd>
-starting index of the change breakpoins (QModelIndex)
-</dd>
-<dt><i>endIndex</i></dt>
-<dd>
-ending index of the change breakpoins (QModelIndex)
+<dt><i>startIndex</i> (QModelIndex)</dt>
+<dd>
+starting index of the change breakpoins
+</dd>
+<dt><i>endIndex</i> (QModelIndex)</dt>
+<dd>
+ending index of the change breakpoins
 </dd>
 </dl>
 <a NAME="DebugServer.__changeWatchPoints" ID="DebugServer.__changeWatchPoints"></a>
@@ -812,13 +860,13 @@
 </p>
 <dl>
 
-<dt><i>startIndex</i></dt>
-<dd>
-start index of the rows to be changed (QModelIndex)
-</dd>
-<dt><i>endIndex</i></dt>
-<dd>
-end index of the rows to be changed (QModelIndex)
+<dt><i>startIndex</i> (QModelIndex)</dt>
+<dd>
+start index of the rows to be changed
+</dd>
+<dt><i>endIndex</i> (QModelIndex)</dt>
+<dd>
+end index of the rows to be changed
 </dd>
 </dl>
 <a NAME="DebugServer.__clientClearBreakPoint" ID="DebugServer.__clientClearBreakPoint"></a>
@@ -830,13 +878,13 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
-<dd>
-filename of breakpoint to clear (string)
-</dd>
-<dt><i>lineno</i></dt>
-<dd>
-line number of breakpoint to clear (integer)
+<dt><i>fn</i> (str)</dt>
+<dd>
+filename of breakpoint to clear
+</dd>
+<dt><i>lineno</i> (int)</dt>
+<dd>
+line number of breakpoint to clear
 </dd>
 </dl>
 <a NAME="DebugServer.__clientClearWatchPoint" ID="DebugServer.__clientClearWatchPoint"></a>
@@ -848,9 +896,9 @@
 </p>
 <dl>
 
-<dt><i>condition</i></dt>
-<dd>
-expression of watch expression to clear (string)
+<dt><i>condition</i> (str)</dt>
+<dd>
+expression of watch expression to clear
 </dd>
 </dl>
 <a NAME="DebugServer.__clientProcessError" ID="DebugServer.__clientProcessError"></a>
@@ -876,9 +924,9 @@
 </p>
 <dl>
 
-<dt><i>clientType</i></dt>
-<dd>
-type of the client interface to be created (string)
+<dt><i>clientType</i> (str)</dt>
+<dd>
+type of the client interface to be created
 </dd>
 </dl>
 <a NAME="DebugServer.__deleteBreakPoints" ID="DebugServer.__deleteBreakPoints"></a>
@@ -890,17 +938,17 @@
 </p>
 <dl>
 
-<dt><i>parentIndex</i></dt>
-<dd>
-index of parent item (QModelIndex)
-</dd>
-<dt><i>start</i></dt>
-<dd>
-start row (integer)
-</dd>
-<dt><i>end</i></dt>
-<dd>
-end row (integer)
+<dt><i>parentIndex</i> (QModelIndex)</dt>
+<dd>
+index of parent item
+</dd>
+<dt><i>start</i> (int)</dt>
+<dd>
+start row
+</dd>
+<dt><i>end</i> (int)</dt>
+<dd>
+end row
 </dd>
 </dl>
 <a NAME="DebugServer.__deleteWatchPoints" ID="DebugServer.__deleteWatchPoints"></a>
@@ -912,17 +960,17 @@
 </p>
 <dl>
 
-<dt><i>parentIndex</i></dt>
-<dd>
-index of parent item (QModelIndex)
-</dd>
-<dt><i>start</i></dt>
-<dd>
-start row (integer)
-</dd>
-<dt><i>end</i></dt>
-<dd>
-end row (integer)
+<dt><i>parentIndex</i> (QModelIndex)</dt>
+<dd>
+index of parent item
+</dd>
+<dt><i>start</i> (int)</dt>
+<dd>
+start row
+</dd>
+<dt><i>end</i> (int)</dt>
+<dd>
+end row
 </dd>
 </dl>
 <a NAME="DebugServer.__findLanguageForExtension" ID="DebugServer.__findLanguageForExtension"></a>
@@ -961,15 +1009,21 @@
 </p>
 <dl>
 
-<dt><i>address</i></dt>
-<dd>
-address to determine the info for (string)
+<dt><i>address</i> (str)</dt>
+<dd>
+address to determine the info for
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-tuple of network interface name (string) and index (integer)
+tuple of network interface name and index
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, int)
 </dd>
 </dl>
 <a NAME="DebugServer.__makeWatchCondition" ID="DebugServer.__makeWatchCondition"></a>
@@ -981,19 +1035,25 @@
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
-<dd>
-condition (string)
-</dd>
-<dt><i>special</i></dt>
-<dd>
-special condition (string)
+<dt><i>cond</i> (str)</dt>
+<dd>
+condition
+</dd>
+<dt><i>special</i> (str)</dt>
+<dd>
+special condition
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-condition string (string)
+condition string
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
 </dd>
 </dl>
 <a NAME="DebugServer.__newConnection" ID="DebugServer.__newConnection"></a>
@@ -1019,94 +1079,107 @@
 </p>
 <a NAME="DebugServer.__remoteBreakpointEnable" ID="DebugServer.__remoteBreakpointEnable"></a>
 <h4>DebugServer.__remoteBreakpointEnable</h4>
-<b>__remoteBreakpointEnable</b>(<i>fn, line, enable</i>)
+<b>__remoteBreakpointEnable</b>(<i>debuggerId, fn, line, enable</i>)
 
 <p>
         Private method to enable or disable a breakpoint.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd>
-<dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd>
-<dt><i>enable</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>fn</i> (str)</dt>
+<dd>
+filename the breakpoint belongs to
+</dd>
+<dt><i>line</i> (int)</dt>
+<dd>
+linenumber of the breakpoint
+</dd>
+<dt><i>enable</i> (bool)</dt>
 <dd>
 flag indicating enabling or disabling a breakpoint
-            (boolean)
 </dd>
 </dl>
 <a NAME="DebugServer.__remoteBreakpointIgnore" ID="DebugServer.__remoteBreakpointIgnore"></a>
 <h4>DebugServer.__remoteBreakpointIgnore</h4>
-<b>__remoteBreakpointIgnore</b>(<i>fn, line, count</i>)
+<b>__remoteBreakpointIgnore</b>(<i>debuggerId, fn, line, count</i>)
 
 <p>
         Private method to ignore a breakpoint the next couple of occurrences.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd>
-<dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd>
-<dt><i>count</i></dt>
-<dd>
-number of occurrences to ignore (int)
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>fn</i> (str)</dt>
+<dd>
+filename the breakpoint belongs to
+</dd>
+<dt><i>line</i> (int)</dt>
+<dd>
+linenumber of the breakpoint
+</dd>
+<dt><i>count</i> (int)</dt>
+<dd>
+number of occurrences to ignore
 </dd>
 </dl>
 <a NAME="DebugServer.__remoteWatchpoint" ID="DebugServer.__remoteWatchpoint"></a>
 <h4>DebugServer.__remoteWatchpoint</h4>
-<b>__remoteWatchpoint</b>(<i>cond, setWatch, temp=False</i>)
+<b>__remoteWatchpoint</b>(<i>debuggerId, cond, setWatch, temp=False</i>)
 
 <p>
         Private method to set or clear a watch expression.
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd>
-<dt><i>setWatch</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>cond</i> (str)</dt>
+<dd>
+expression of the watch expression
+</dd>
+<dt><i>setWatch</i> (bool)</dt>
 <dd>
 flag indicating setting or resetting a watch expression
-            (boolean)
-</dd>
-<dt><i>temp</i></dt>
-<dd>
-flag indicating a temporary watch expression (boolean)
+</dd>
+<dt><i>temp</i> (bool)</dt>
+<dd>
+flag indicating a temporary watch expression
 </dd>
 </dl>
 <a NAME="DebugServer.__remoteWatchpointEnable" ID="DebugServer.__remoteWatchpointEnable"></a>
 <h4>DebugServer.__remoteWatchpointEnable</h4>
-<b>__remoteWatchpointEnable</b>(<i>cond, enable</i>)
+<b>__remoteWatchpointEnable</b>(<i>debuggerId, cond, enable</i>)
 
 <p>
         Private method to enable or disable a watch expression.
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd>
-<dt><i>enable</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>cond</i> (str)</dt>
+<dd>
+expression of the watch expression
+</dd>
+<dt><i>enable</i> (bool)</dt>
 <dd>
 flag indicating enabling or disabling a watch expression
-            (boolean)
 </dd>
 </dl>
 <a NAME="DebugServer.__remoteWatchpointIgnore" ID="DebugServer.__remoteWatchpointIgnore"></a>
 <h4>DebugServer.__remoteWatchpointIgnore</h4>
-<b>__remoteWatchpointIgnore</b>(<i>cond, count</i>)
+<b>__remoteWatchpointIgnore</b>(<i>debuggerId, cond, count</i>)
 
 <p>
         Private method to ignore a watch expression the next couple of
@@ -1114,29 +1187,64 @@
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd>
-<dt><i>count</i></dt>
-<dd>
-number of occurrences to ignore (int)
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>cond</i> (str)</dt>
+<dd>
+expression of the watch expression
+</dd>
+<dt><i>count</i> (int)</dt>
+<dd>
+number of occurrences to ignore
 </dd>
 </dl>
 <a NAME="DebugServer.__restoreBreakpoints" ID="DebugServer.__restoreBreakpoints"></a>
 <h4>DebugServer.__restoreBreakpoints</h4>
-<b>__restoreBreakpoints</b>(<i></i>)
+<b>__restoreBreakpoints</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to restore the breakpoints after a restart.
 </p>
-<a NAME="DebugServer.__restoreWatchpoints" ID="DebugServer.__restoreWatchpoints"></a>
-<h4>DebugServer.__restoreWatchpoints</h4>
-<b>__restoreWatchpoints</b>(<i></i>)
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend to send to. If this is
+            empty, they will be broadcast to all connected backends.
+</dd>
+</dl>
+<a NAME="DebugServer.__restoreNoDebugList" ID="DebugServer.__restoreNoDebugList"></a>
+<h4>DebugServer.__restoreNoDebugList</h4>
+<b>__restoreNoDebugList</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to restore the watch expressions after a restart.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend to send to. If this is
+            empty, they will be broadcast to all connected backends.
+</dd>
+</dl>
+<a NAME="DebugServer.__restoreWatchpoints" ID="DebugServer.__restoreWatchpoints"></a>
+<h4>DebugServer.__restoreWatchpoints</h4>
+<b>__restoreWatchpoints</b>(<i>debuggerId=""</i>)
+
+<p>
+        Private method to restore the watch expressions after a restart.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend to send to. If this is
+            empty, they will be broadcast to all connected backends.
+</dd>
+</dl>
 <a NAME="DebugServer.__setClientType" ID="DebugServer.__setClientType"></a>
 <h4>DebugServer.__setClientType</h4>
 <b>__setClientType</b>(<i>clType</i>)
@@ -1146,9 +1254,9 @@
 </p>
 <dl>
 
-<dt><i>clType</i></dt>
-<dd>
-type of client to be started (string)
+<dt><i>clType</i> (str)</dt>
+<dd>
+type of client to be started
 </dd>
 </dl>
 <a NAME="DebugServer.__splitWatchCondition" ID="DebugServer.__splitWatchCondition"></a>
@@ -1160,16 +1268,21 @@
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
-<dd>
-remote expression (string)
+<dt><i>cond</i> (str)</dt>
+<dd>
+remote expression
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
 tuple of local expression (string) and special condition
-            (string)
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
 </dd>
 </dl>
 <a NAME="DebugServer.__watchPointDataAboutToBeChanged" ID="DebugServer.__watchPointDataAboutToBeChanged"></a>
@@ -1182,13 +1295,13 @@
 </p>
 <dl>
 
-<dt><i>startIndex</i></dt>
-<dd>
-start index of the rows to be changed (QModelIndex)
-</dd>
-<dt><i>endIndex</i></dt>
-<dd>
-end index of the rows to be changed (QModelIndex)
+<dt><i>startIndex</i> (QModelIndex)</dt>
+<dd>
+start index of the rows to be changed
+</dd>
+<dt><i>endIndex</i> (QModelIndex)</dt>
+<dd>
+end index of the rows to be changed
 </dd>
 </dl>
 <a NAME="DebugServer.clientUtDiscovered" ID="DebugServer.clientUtDiscovered"></a>
@@ -1236,17 +1349,17 @@
 </p>
 <dl>
 
-<dt><i>result</i></dt>
-<dd>
-number of test cases (0 = error) (integer)
-</dd>
-<dt><i>exceptionType</i></dt>
-<dd>
-exception type (string)
-</dd>
-<dt><i>exceptionValue</i></dt>
-<dd>
-exception message (string)
+<dt><i>result</i> (int)</dt>
+<dd>
+number of test cases (0 = error)
+</dd>
+<dt><i>exceptionType</i> (str)</dt>
+<dd>
+exception type
+</dd>
+<dt><i>exceptionValue</i> (str)</dt>
+<dd>
+exception message
 </dd>
 </dl>
 <a NAME="DebugServer.clientUtStartTest" ID="DebugServer.clientUtStartTest"></a>
@@ -1258,13 +1371,13 @@
 </p>
 <dl>
 
-<dt><i>testname</i></dt>
-<dd>
-name of the test (string)
-</dd>
-<dt><i>doc</i></dt>
-<dd>
-short description of the test (string)
+<dt><i>testname</i> (str)</dt>
+<dd>
+name of the test
+</dd>
+<dt><i>doc</i> (str)</dt>
+<dd>
+short description of the test
 </dd>
 </dl>
 <a NAME="DebugServer.clientUtStopTest" ID="DebugServer.clientUtStopTest"></a>
@@ -1283,17 +1396,17 @@
 </p>
 <dl>
 
-<dt><i>testname</i></dt>
-<dd>
-name of the test (string)
-</dd>
-<dt><i>traceback</i></dt>
-<dd>
-lines of traceback info (list of strings)
-</dd>
-<dt><i>testId</i></dt>
-<dd>
-id of the test (string)
+<dt><i>testname</i> (str)</dt>
+<dd>
+name of the test
+</dd>
+<dt><i>traceback</i> (list of str)</dt>
+<dd>
+lines of traceback info
+</dd>
+<dt><i>testId</i> (str)</dt>
+<dd>
+id of the test
 </dd>
 </dl>
 <a NAME="DebugServer.clientUtTestFailed" ID="DebugServer.clientUtTestFailed"></a>
@@ -1305,17 +1418,17 @@
 </p>
 <dl>
 
-<dt><i>testname</i></dt>
-<dd>
-name of the test (string)
-</dd>
-<dt><i>traceback</i></dt>
-<dd>
-lines of traceback info (list of strings)
-</dd>
-<dt><i>testId</i></dt>
-<dd>
-id of the test (string)
+<dt><i>testname</i> (str)</dt>
+<dd>
+name of the test
+</dd>
+<dt><i>traceback</i> (list of str)</dt>
+<dd>
+lines of traceback info
+</dd>
+<dt><i>testId</i> (str)</dt>
+<dd>
+id of the test
 </dd>
 </dl>
 <a NAME="DebugServer.clientUtTestFailedExpected" ID="DebugServer.clientUtTestFailedExpected"></a>
@@ -1327,17 +1440,17 @@
 </p>
 <dl>
 
-<dt><i>testname</i></dt>
-<dd>
-name of the test (string)
-</dd>
-<dt><i>traceback</i></dt>
-<dd>
-lines of traceback info (list of strings)
-</dd>
-<dt><i>testId</i></dt>
-<dd>
-id of the test (string)
+<dt><i>testname</i> (str)</dt>
+<dd>
+name of the test
+</dd>
+<dt><i>traceback</i> (list of str)</dt>
+<dd>
+lines of traceback info
+</dd>
+<dt><i>testId</i> (str)</dt>
+<dd>
+id of the test
 </dd>
 </dl>
 <a NAME="DebugServer.clientUtTestSkipped" ID="DebugServer.clientUtTestSkipped"></a>
@@ -1349,17 +1462,17 @@
 </p>
 <dl>
 
-<dt><i>testname</i></dt>
-<dd>
-name of the test (string)
-</dd>
-<dt><i>reason</i></dt>
-<dd>
-reason for skipping the test (string)
-</dd>
-<dt><i>testId</i></dt>
-<dd>
-id of the test (string)
+<dt><i>testname</i> (str)</dt>
+<dd>
+name of the test
+</dd>
+<dt><i>reason</i> (str)</dt>
+<dd>
+reason for skipping the test
+</dd>
+<dt><i>testId</i> (str)</dt>
+<dd>
+id of the test
 </dd>
 </dl>
 <a NAME="DebugServer.clientUtTestSucceededUnexpected" ID="DebugServer.clientUtTestSucceededUnexpected"></a>
@@ -1371,13 +1484,13 @@
 </p>
 <dl>
 
-<dt><i>testname</i></dt>
-<dd>
-name of the test (string)
-</dd>
-<dt><i>testId</i></dt>
-<dd>
-id of the test (string)
+<dt><i>testname</i> (str)</dt>
+<dd>
+name of the test
+</dd>
+<dt><i>testId</i> (str)</dt>
+<dd>
+id of the test
 </dd>
 </dl>
 <a NAME="DebugServer.getBreakPointModel" ID="DebugServer.getBreakPointModel"></a>
@@ -1390,7 +1503,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-reference to the breakpoint model object (BreakPointModel)
+reference to the breakpoint model object
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+BreakPointModel
 </dd>
 </dl>
 <a NAME="DebugServer.getClientCapabilities" ID="DebugServer.getClientCapabilities"></a>
@@ -1402,15 +1521,21 @@
 </p>
 <dl>
 
-<dt><i>clientType</i></dt>
-<dd>
-debug client type (string)
+<dt><i>clientType</i> (str)</dt>
+<dd>
+debug client type
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-debug client capabilities (integer)
+debug client capabilities
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+int
 </dd>
 </dl>
 <a NAME="DebugServer.getClientInterpreter" ID="DebugServer.getClientInterpreter"></a>
@@ -1423,7 +1548,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-interpreter of the debug client (string)
+interpreter of the debug client
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
 </dd>
 </dl>
 <a NAME="DebugServer.getClientType" ID="DebugServer.getClientType"></a>
@@ -1445,6 +1576,25 @@
 str
 </dd>
 </dl>
+<a NAME="DebugServer.getDebuggerIds" ID="DebugServer.getDebuggerIds"></a>
+<h4>DebugServer.getDebuggerIds</h4>
+<b>getDebuggerIds</b>(<i></i>)
+
+<p>
+        Public method to return the IDs of the connected debugger backends.
+</p>
+<dl>
+<dt>Returns:</dt>
+<dd>
+list of connected debugger backend IDs
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
 <a NAME="DebugServer.getExtensions" ID="DebugServer.getExtensions"></a>
 <h4>DebugServer.getExtensions</h4>
 <b>getExtensions</b>(<i>language</i>)
@@ -1454,16 +1604,21 @@
 </p>
 <dl>
 
-<dt><i>language</i></dt>
-<dd>
-language to get extensions for (string)
+<dt><i>language</i> (str)</dt>
+<dd>
+language to get extensions for
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
 tuple of extensions associated with the language
-            (tuple of strings)
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of str
 </dd>
 </dl>
 <a NAME="DebugServer.getHostAddress" ID="DebugServer.getHostAddress"></a>
@@ -1476,16 +1631,21 @@
 </p>
 <dl>
 
-<dt><i>localhost</i></dt>
+<dt><i>localhost</i> (bool)</dt>
 <dd>
 flag indicating to return the address for localhost
-            (boolean)
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-IP address or hostname (string)
+IP address or hostname
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
 </dd>
 </dl>
 <a NAME="DebugServer.getSupportedLanguages" ID="DebugServer.getSupportedLanguages"></a>
@@ -1497,7 +1657,7 @@
 </p>
 <dl>
 
-<dt><i>shellOnly</i></dt>
+<dt><i>shellOnly</i> (bool)</dt>
 <dd>
 flag indicating only languages supporting an
             interactive shell should be returned
@@ -1506,7 +1666,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-list of supported languages (list of strings)
+list of supported languages
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
 </dd>
 </dl>
 <a NAME="DebugServer.getWatchPointModel" ID="DebugServer.getWatchPointModel"></a>
@@ -1520,7 +1686,26 @@
 <dt>Returns:</dt>
 <dd>
 reference to the watch expression model object
-            (WatchPointModel)
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+WatchPointModel
+</dd>
+</dl>
+<a NAME="DebugServer.initializeClient" ID="DebugServer.initializeClient"></a>
+<h4>DebugServer.initializeClient</h4>
+<b>initializeClient</b>(<i>debuggerId</i>)
+
+<p>
+        Public method to initialize a freshly connected debug client.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the connected debugger
 </dd>
 </dl>
 <a NAME="DebugServer.isClientProcessUp" ID="DebugServer.isClientProcessUp"></a>
@@ -1552,7 +1737,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating a connection (boolean)
+flag indicating a connection
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="DebugServer.isDebugging" ID="DebugServer.isDebugging"></a>
@@ -1574,22 +1765,34 @@
 bool
 </dd>
 </dl>
+<a NAME="DebugServer.masterClientConnected" ID="DebugServer.masterClientConnected"></a>
+<h4>DebugServer.masterClientConnected</h4>
+<b>masterClientConnected</b>(<i></i>)
+
+<p>
+        Public method to perform actions after the master client has finally
+        established the connection.
+</p>
 <a NAME="DebugServer.passiveStartUp" ID="DebugServer.passiveStartUp"></a>
 <h4>DebugServer.passiveStartUp</h4>
-<b>passiveStartUp</b>(<i>fn, exc</i>)
+<b>passiveStartUp</b>(<i>fn, exc, debuggerId</i>)
 
 <p>
         Public method to handle a passive debug connection.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
-<dd>
-filename of the debugged script (string)
-</dd>
-<dt><i>exc</i></dt>
-<dd>
-flag to enable exception reporting of the IDE (boolean)
+<dt><i>fn</i> (str)</dt>
+<dd>
+filename of the debugged script
+</dd>
+<dt><i>exc</i> (bool)</dt>
+<dd>
+flag to enable exception reporting of the IDE
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.preferencesChanged" ID="DebugServer.preferencesChanged"></a>
@@ -1634,33 +1837,36 @@
 </p>
 <a NAME="DebugServer.remoteBreakpoint" ID="DebugServer.remoteBreakpoint"></a>
 <h4>DebugServer.remoteBreakpoint</h4>
-<b>remoteBreakpoint</b>(<i>fn, line, setBreakpoint, cond=None, temp=False</i>)
+<b>remoteBreakpoint</b>(<i>debuggerId, fn, line, setBreakpoint, cond=None, temp=False</i>)
 
 <p>
         Public method to set or clear a breakpoint.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd>
-<dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd>
-<dt><i>setBreakpoint</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>fn</i> (str)</dt>
+<dd>
+filename the breakpoint belongs to
+</dd>
+<dt><i>line</i> (int)</dt>
+<dd>
+linenumber of the breakpoint
+</dd>
+<dt><i>setBreakpoint</i> (bool)</dt>
 <dd>
 flag indicating setting or resetting a breakpoint
-            (boolean)
-</dd>
-<dt><i>cond</i></dt>
-<dd>
-condition of the breakpoint (string)
-</dd>
-<dt><i>temp</i></dt>
-<dd>
-flag indicating a temporary breakpoint (boolean)
+</dd>
+<dt><i>cond</i> (str)</dt>
+<dd>
+condition of the breakpoint
+</dd>
+<dt><i>temp</i> (bool)</dt>
+<dd>
+flag indicating a temporary breakpoint
 </dd>
 </dl>
 <a NAME="DebugServer.remoteCapabilities" ID="DebugServer.remoteCapabilities"></a>
@@ -1672,81 +1878,119 @@
 </p>
 <a NAME="DebugServer.remoteClientDisassembly" ID="DebugServer.remoteClientDisassembly"></a>
 <h4>DebugServer.remoteClientDisassembly</h4>
-<b>remoteClientDisassembly</b>(<i></i>)
+<b>remoteClientDisassembly</b>(<i>debuggerId</i>)
 
 <p>
         Public method to ask the client for the latest traceback disassembly.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugServer.remoteClientSetFilter" ID="DebugServer.remoteClientSetFilter"></a>
 <h4>DebugServer.remoteClientSetFilter</h4>
-<b>remoteClientSetFilter</b>(<i>scope, filterStr</i>)
+<b>remoteClientSetFilter</b>(<i>debuggerId, scope, filterStr</i>)
 
 <p>
         Public method to set a variables filter list.
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterStr</i></dt>
+<dt><i>filterStr</i> (str)</dt>
 <dd>
 regexp string for variable names to filter out
-            (string)
+</dd>
+</dl>
+<a NAME="DebugServer.remoteClientStack" ID="DebugServer.remoteClientStack"></a>
+<h4>DebugServer.remoteClientStack</h4>
+<b>remoteClientStack</b>(<i>debuggerId</i>)
+
+<p>
+        Public method to request the stack of the main thread.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.remoteClientVariable" ID="DebugServer.remoteClientVariable"></a>
 <h4>DebugServer.remoteClientVariable</h4>
-<b>remoteClientVariable</b>(<i>scope, filterList, var, framenr=0</i>)
+<b>remoteClientVariable</b>(<i>debuggerId, scope, filterList, var, framenr=0, maxSize=0</i>)
 
 <p>
         Public method to request the variables of the debugged program.
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterList</i></dt>
-<dd>
-list of variable types to filter out (list of int)
-</dd>
-<dt><i>var</i></dt>
-<dd>
-list encoded name of variable to retrieve (string)
-</dd>
-<dt><i>framenr</i></dt>
-<dd>
-framenumber of the variables to retrieve (int)
+<dt><i>filterList</i> (list of str)</dt>
+<dd>
+list of variable types to filter out
+</dd>
+<dt><i>var</i> (list of str)</dt>
+<dd>
+list encoded name of variable to retrieve
+</dd>
+<dt><i>framenr</i> (int)</dt>
+<dd>
+framenumber of the variables to retrieve
+</dd>
+<dt><i>maxSize</i> (int)</dt>
+<dd>
+maximum size the formatted value of a variable will
+            be shown. If it is bigger than that, a 'too big' indication will
+            be given (@@TOO_BIG_TO_SHOW@@).
 </dd>
 </dl>
 <a NAME="DebugServer.remoteClientVariables" ID="DebugServer.remoteClientVariables"></a>
 <h4>DebugServer.remoteClientVariables</h4>
-<b>remoteClientVariables</b>(<i>scope, filterList, framenr=0</i>)
+<b>remoteClientVariables</b>(<i>debuggerId, scope, filterList, framenr=0</i>)
 
 <p>
         Public method to request the variables of the debugged program.
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterList</i></dt>
-<dd>
-list of variable types to filter out (list of int)
-</dd>
-<dt><i>framenr</i></dt>
-<dd>
-framenumber of the variables to retrieve (int)
+<dt><i>filterList</i> (list of str)</dt>
+<dd>
+list of variable types to filter out
+</dd>
+<dt><i>framenr</i> (int)</dt>
+<dd>
+framenumber of the variables to retrieve
 </dd>
 </dl>
 <a NAME="DebugServer.remoteCompletion" ID="DebugServer.remoteCompletion"></a>
 <h4>DebugServer.remoteCompletion</h4>
-<b>remoteCompletion</b>(<i>text</i>)
+<b>remoteCompletion</b>(<i>debuggerId, text</i>)
 
 <p>
         Public slot to get the a list of possible commandline completions
@@ -1754,20 +1998,28 @@
 </p>
 <dl>
 
-<dt><i>text</i></dt>
-<dd>
-the text to be completed (string)
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>text</i> (str)</dt>
+<dd>
+the text to be completed
 </dd>
 </dl>
 <a NAME="DebugServer.remoteContinue" ID="DebugServer.remoteContinue"></a>
 <h4>DebugServer.remoteContinue</h4>
-<b>remoteContinue</b>(<i>special=False</i>)
+<b>remoteContinue</b>(<i>debuggerId, special=False</i>)
 
 <p>
         Public method to continue the debugged program.
 </p>
 <dl>
 
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 <dt><i>special</i></dt>
 <dd>
 flag indicating a special continue operation
@@ -1802,26 +2054,26 @@
 <dd>
 environment parameter settings
 </dd>
-<dt><i>autoClearShell=</i> (bool)</dt>
+<dt><i>autoClearShell</i> (bool)</dt>
 <dd>
 flag indicating, that the interpreter window
             should be cleared
 </dd>
-<dt><i>erase=</i> (bool)</dt>
+<dt><i>erase</i> (bool)</dt>
 <dd>
 flag indicating that coverage info should be
             cleared first
 </dd>
-<dt><i>forProject=</i> (bool)</dt>
+<dt><i>forProject</i> (bool)</dt>
 <dd>
 flag indicating a project related action
 </dd>
-<dt><i>runInConsole=</i> (bool)</dt>
+<dt><i>runInConsole</i> (bool)</dt>
 <dd>
 flag indicating to start the debugger in a
             console window
 </dd>
-<dt><i>clientType=</i> (str)</dt>
+<dt><i>clientType</i> (str)</dt>
 <dd>
 client type to be used
 </dd>
@@ -1835,14 +2087,14 @@
 </p>
 <dl>
 
-<dt><i>env</i></dt>
-<dd>
-environment settings (string)
+<dt><i>env</i> (str)</dt>
+<dd>
+environment settings
 </dd>
 </dl>
 <a NAME="DebugServer.remoteLoad" ID="DebugServer.remoteLoad"></a>
 <h4>DebugServer.remoteLoad</h4>
-<b>remoteLoad</b>(<i>venvName, fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType="", enableCallTrace=False</i>)
+<b>remoteLoad</b>(<i>venvName, fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, clientType="", enableCallTrace=False, enableMultiprocess=False, multiprocessNoDebug=""</i>)
 
 <p>
         Public method to load a new program to debug.
@@ -1869,58 +2121,64 @@
 <dd>
 environment parameter settings
 </dd>
-<dt><i>autoClearShell=</i> (bool)</dt>
+<dt><i>autoClearShell</i> (bool)</dt>
 <dd>
 flag indicating, that the interpreter window
             should be cleared
 </dd>
-<dt><i>tracePython=</i> (bool)</dt>
+<dt><i>tracePython</i> (bool)</dt>
 <dd>
 flag indicating if the Python library should be
             traced as well
 </dd>
-<dt><i>autoContinue=</i> (bool)</dt>
+<dt><i>autoContinue</i> (bool)</dt>
 <dd>
 flag indicating, that the debugger should not
             stop at the first executable line
 </dd>
-<dt><i>forProject=</i> (bool)</dt>
+<dt><i>forProject</i> (bool)</dt>
 <dd>
 flag indicating a project related action
 </dd>
-<dt><i>runInConsole=</i> (bool)</dt>
+<dt><i>runInConsole</i> (bool)</dt>
 <dd>
 flag indicating to start the debugger in a
             console window
 </dd>
-<dt><i>autoFork=</i> (bool)</dt>
-<dd>
-flag indicating the automatic fork mode
-</dd>
-<dt><i>forkChild=</i> (bool)</dt>
-<dd>
-flag indicating to debug the child after forking
-</dd>
-<dt><i>clientType=</i> (str)</dt>
+<dt><i>clientType</i> (str)</dt>
 <dd>
 client type to be used
 </dd>
-<dt><i>enableCallTrace=</i> (bool)</dt>
+<dt><i>enableCallTrace</i> (bool)</dt>
 <dd>
 flag indicating to enable the call trace
             function
 </dd>
+<dt><i>enableMultiprocess</i> (bool)</dt>
+<dd>
+flag indicating to perform multiprocess
+            debugging
+</dd>
+<dt><i>multiprocessNoDebug</i> (str)</dt>
+<dd>
+space separated list of programs not to be
+            debugged
+</dd>
 </dl>
 <a NAME="DebugServer.remoteMoveIP" ID="DebugServer.remoteMoveIP"></a>
 <h4>DebugServer.remoteMoveIP</h4>
-<b>remoteMoveIP</b>(<i>line</i>)
+<b>remoteMoveIP</b>(<i>debuggerId, line</i>)
 
 <p>
         Public method to move the instruction pointer to a different line.
 </p>
 <dl>
 
-<dt><i>line</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>line</i> (int)</dt>
 <dd>
 the new line, where execution should be continued
 </dd>
@@ -1954,47 +2212,51 @@
 <dd>
 environment parameter settings
 </dd>
-<dt><i>autoClearShell=</i> (bool)</dt>
+<dt><i>autoClearShell</i> (bool)</dt>
 <dd>
 flag indicating, that the interpreter window
             should be cleared
 </dd>
-<dt><i>erase=</i> (bool)</dt>
+<dt><i>erase</i> (bool)</dt>
 <dd>
 flag indicating that coverage info should be
             cleared first
 </dd>
-<dt><i>forProject=</i> (bool)</dt>
+<dt><i>forProject</i> (bool)</dt>
 <dd>
 flag indicating a project related action
 </dd>
-<dt><i>runInConsole=</i> (bool)</dt>
+<dt><i>runInConsole</i> (bool)</dt>
 <dd>
 flag indicating to start the debugger in a
             console window
 </dd>
-<dt><i>clientType=</i> (str)</dt>
+<dt><i>clientType</i> (str)</dt>
 <dd>
 client type to be used
 </dd>
 </dl>
 <a NAME="DebugServer.remoteRawInput" ID="DebugServer.remoteRawInput"></a>
 <h4>DebugServer.remoteRawInput</h4>
-<b>remoteRawInput</b>(<i>s</i>)
+<b>remoteRawInput</b>(<i>debuggerId, inputString</i>)
 
 <p>
         Public method to send the raw input to the debugged program.
 </p>
 <dl>
 
-<dt><i>s</i></dt>
-<dd>
-the raw input (string)
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>inputString</i> (str)</dt>
+<dd>
+the raw input
 </dd>
 </dl>
 <a NAME="DebugServer.remoteRun" ID="DebugServer.remoteRun"></a>
 <h4>DebugServer.remoteRun</h4>
-<b>remoteRun</b>(<i>venvName, fn, argv, wd, env, autoClearShell=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType=""</i>)
+<b>remoteRun</b>(<i>venvName, fn, argv, wd, env, autoClearShell=True, forProject=False, runInConsole=False, clientType=""</i>)
 
 <p>
         Public method to load a new program to run.
@@ -2021,97 +2283,131 @@
 <dd>
 environment parameter settings
 </dd>
-<dt><i>autoClearShell=</i> (bool)</dt>
+<dt><i>autoClearShell</i> (bool)</dt>
 <dd>
 flag indicating, that the interpreter window
             should be cleared
 </dd>
-<dt><i>forProject=</i> (bool)</dt>
+<dt><i>forProject</i> (bool)</dt>
 <dd>
 flag indicating a project related action
 </dd>
-<dt><i>runInConsole=</i> (bool)</dt>
+<dt><i>runInConsole</i> (bool)</dt>
 <dd>
 flag indicating to start the debugger in a
             console window
 </dd>
-<dt><i>autoFork=</i> (bool)</dt>
-<dd>
-flag indicating the automatic fork mode
-</dd>
-<dt><i>forkChild=</i> (bool)</dt>
-<dd>
-flag indicating to debug the child after forking
-</dd>
-<dt><i>clientType=</i> (str)</dt>
+<dt><i>clientType</i> (str)</dt>
 <dd>
 client type to be used
 </dd>
 </dl>
 <a NAME="DebugServer.remoteSetThread" ID="DebugServer.remoteSetThread"></a>
 <h4>DebugServer.remoteSetThread</h4>
-<b>remoteSetThread</b>(<i>tid</i>)
+<b>remoteSetThread</b>(<i>debuggerId, tid</i>)
 
 <p>
         Public method to request to set the given thread as current thread.
 </p>
 <dl>
 
-<dt><i>tid</i></dt>
-<dd>
-id of the thread (integer)
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>tid</i> (int)</dt>
+<dd>
+id of the thread
 </dd>
 </dl>
 <a NAME="DebugServer.remoteStatement" ID="DebugServer.remoteStatement"></a>
 <h4>DebugServer.remoteStatement</h4>
-<b>remoteStatement</b>(<i>stmt</i>)
+<b>remoteStatement</b>(<i>debuggerId, stmt</i>)
 
 <p>
         Public method to execute a Python statement.
 </p>
 <dl>
 
-<dt><i>stmt</i></dt>
-<dd>
-the Python statement to execute (string). It
-              should not have a trailing newline.
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>stmt</i> (str)</dt>
+<dd>
+the Python statement to execute.
 </dd>
 </dl>
 <a NAME="DebugServer.remoteStep" ID="DebugServer.remoteStep"></a>
 <h4>DebugServer.remoteStep</h4>
-<b>remoteStep</b>(<i></i>)
+<b>remoteStep</b>(<i>debuggerId</i>)
 
 <p>
         Public method to single step the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugServer.remoteStepOut" ID="DebugServer.remoteStepOut"></a>
 <h4>DebugServer.remoteStepOut</h4>
-<b>remoteStepOut</b>(<i></i>)
+<b>remoteStepOut</b>(<i>debuggerId</i>)
 
 <p>
         Public method to step out the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugServer.remoteStepOver" ID="DebugServer.remoteStepOver"></a>
 <h4>DebugServer.remoteStepOver</h4>
-<b>remoteStepOver</b>(<i></i>)
+<b>remoteStepOver</b>(<i>debuggerId</i>)
 
 <p>
         Public method to step over the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugServer.remoteStepQuit" ID="DebugServer.remoteStepQuit"></a>
 <h4>DebugServer.remoteStepQuit</h4>
-<b>remoteStepQuit</b>(<i></i>)
+<b>remoteStepQuit</b>(<i>debuggerId</i>)
 
 <p>
         Public method to stop the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugServer.remoteThreadList" ID="DebugServer.remoteThreadList"></a>
 <h4>DebugServer.remoteThreadList</h4>
-<b>remoteThreadList</b>(<i></i>)
+<b>remoteThreadList</b>(<i>debuggerId</i>)
 
 <p>
         Public method to request the list of threads from the client.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugServer.remoteUTDiscover" ID="DebugServer.remoteUTDiscover"></a>
 <h4>DebugServer.remoteUTDiscover</h4>
 <b>remoteUTDiscover</b>(<i>clientType, forProject, venvName, syspath, workdir, discoveryStart</i>)
@@ -2250,16 +2546,20 @@
 </p>
 <a NAME="DebugServer.setCallTraceEnabled" ID="DebugServer.setCallTraceEnabled"></a>
 <h4>DebugServer.setCallTraceEnabled</h4>
-<b>setCallTraceEnabled</b>(<i>on</i>)
+<b>setCallTraceEnabled</b>(<i>debuggerId, on</i>)
 
 <p>
         Public method to set the call trace state.
 </p>
 <dl>
 
-<dt><i>on</i></dt>
-<dd>
-flag indicating to enable the call trace function (boolean)
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>on</i> (bool)</dt>
+<dd>
+flag indicating to enable the call trace function
 </dd>
 </dl>
 <a NAME="DebugServer.setDebugging" ID="DebugServer.setDebugging"></a>
@@ -2289,7 +2589,7 @@
 </p>
 <a NAME="DebugServer.signalClientBanner" ID="DebugServer.signalClientBanner"></a>
 <h4>DebugServer.signalClientBanner</h4>
-<b>signalClientBanner</b>(<i>version, platform, debugClient, venvName</i>)
+<b>signalClientBanner</b>(<i>version, platform, venvName</i>)
 
 <p>
         Public method to process the client banner info.
@@ -2304,10 +2604,6 @@
 <dd>
 hostname of the client
 </dd>
-<dt><i>debugClient</i> (str)</dt>
-<dd>
-additional debugger type info
-</dd>
 <dt><i>venvName</i> (str)</dt>
 <dd>
 name of the virtual environment
@@ -2315,58 +2611,66 @@
 </dl>
 <a NAME="DebugServer.signalClientBreakConditionError" ID="DebugServer.signalClientBreakConditionError"></a>
 <h4>DebugServer.signalClientBreakConditionError</h4>
-<b>signalClientBreakConditionError</b>(<i>filename, lineno</i>)
+<b>signalClientBreakConditionError</b>(<i>filename, lineno, debuggerId</i>)
 
 <p>
         Public method to process the client breakpoint condition error info.
 </p>
 <dl>
 
-<dt><i>filename</i></dt>
-<dd>
-filename of the breakpoint (string)
-</dd>
-<dt><i>lineno</i></dt>
-<dd>
-line umber of the breakpoint (integer)
+<dt><i>filename</i> (str)</dt>
+<dd>
+filename of the breakpoint
+</dd>
+<dt><i>lineno</i> (int)</dt>
+<dd>
+line umber of the breakpoint
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientCallTrace" ID="DebugServer.signalClientCallTrace"></a>
 <h4>DebugServer.signalClientCallTrace</h4>
-<b>signalClientCallTrace</b>(<i>isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction</i>)
+<b>signalClientCallTrace</b>(<i>isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction, debuggerId</i>)
 
 <p>
         Public method to process the client call trace data.
 </p>
 <dl>
 
-<dt><i>isCall</i></dt>
-<dd>
-flag indicating a 'call' (boolean)
-</dd>
-<dt><i>fromFile</i></dt>
-<dd>
-name of the originating file (string)
-</dd>
-<dt><i>fromLine</i></dt>
-<dd>
-line number in the originating file (string)
-</dd>
-<dt><i>fromFunction</i></dt>
-<dd>
-name of the originating function (string)
-</dd>
-<dt><i>toFile</i></dt>
-<dd>
-name of the target file (string)
-</dd>
-<dt><i>toLine</i></dt>
-<dd>
-line number in the target file (string)
-</dd>
-<dt><i>toFunction</i></dt>
-<dd>
-name of the target function (string)
+<dt><i>isCall</i> (bool)</dt>
+<dd>
+flag indicating a 'call'
+</dd>
+<dt><i>fromFile</i> (str)</dt>
+<dd>
+name of the originating file
+</dd>
+<dt><i>fromLine</i> (str)</dt>
+<dd>
+line number in the originating file
+</dd>
+<dt><i>fromFunction</i> (str)</dt>
+<dd>
+name of the originating function
+</dd>
+<dt><i>toFile</i> (str)</dt>
+<dd>
+name of the target file
+</dd>
+<dt><i>toLine</i> (str)</dt>
+<dd>
+line number in the target file
+</dd>
+<dt><i>toFunction</i> (str)</dt>
+<dd>
+name of the target function
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientCapabilities" ID="DebugServer.signalClientCapabilities"></a>
@@ -2393,57 +2697,86 @@
 </dl>
 <a NAME="DebugServer.signalClientClearBreak" ID="DebugServer.signalClientClearBreak"></a>
 <h4>DebugServer.signalClientClearBreak</h4>
-<b>signalClientClearBreak</b>(<i>filename, lineno</i>)
+<b>signalClientClearBreak</b>(<i>filename, lineno, debuggerId</i>)
 
 <p>
         Public method to process the client clear breakpoint command.
 </p>
 <dl>
 
-<dt><i>filename</i></dt>
-<dd>
-filename of the breakpoint (string)
-</dd>
-<dt><i>lineno</i></dt>
-<dd>
-line umber of the breakpoint (integer)
+<dt><i>filename</i> (str)</dt>
+<dd>
+filename of the breakpoint
+</dd>
+<dt><i>lineno</i> (int)</dt>
+<dd>
+line umber of the breakpoint
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientClearWatch" ID="DebugServer.signalClientClearWatch"></a>
 <h4>DebugServer.signalClientClearWatch</h4>
-<b>signalClientClearWatch</b>(<i>condition</i>)
+<b>signalClientClearWatch</b>(<i>condition, debuggerId</i>)
 
 <p>
         Public slot to handle the clientClearWatch signal.
 </p>
 <dl>
 
-<dt><i>condition</i></dt>
-<dd>
-expression of watch expression to clear (string)
+<dt><i>condition</i> (str)</dt>
+<dd>
+expression of watch expression to clear
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientCompletionList" ID="DebugServer.signalClientCompletionList"></a>
 <h4>DebugServer.signalClientCompletionList</h4>
-<b>signalClientCompletionList</b>(<i>completionList, text</i>)
+<b>signalClientCompletionList</b>(<i>completionList, text, debuggerId</i>)
 
 <p>
         Public method to process the client auto completion info.
 </p>
 <dl>
 
-<dt><i>completionList</i></dt>
-<dd>
-list of possible completions (list of strings)
-</dd>
-<dt><i>text</i></dt>
-<dd>
-the text to be completed (string)
+<dt><i>completionList</i> (list of str)</dt>
+<dd>
+list of possible completions
+</dd>
+<dt><i>text</i> (str)</dt>
+<dd>
+the text to be completed
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
+<a NAME="DebugServer.signalClientDebuggerId" ID="DebugServer.signalClientDebuggerId"></a>
+<h4>DebugServer.signalClientDebuggerId</h4>
+<b>signalClientDebuggerId</b>(<i>debuggerId</i>)
+
+<p>
+        Public method to signal the receipt of a new debugger ID.
+</p>
+<p>
+        This signal indicates, that a new debugger backend has connected.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the newly connected debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientDisassembly" ID="DebugServer.signalClientDisassembly"></a>
 <h4>DebugServer.signalClientDisassembly</h4>
-<b>signalClientDisassembly</b>(<i>disassembly</i>)
+<b>signalClientDisassembly</b>(<i>disassembly, debuggerId</i>)
 
 <p>
         Public method to process the disassembly info from the client.
@@ -2454,40 +2787,52 @@
 <dd>
 dictionary containing the disassembly information
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugServer.signalClientException" ID="DebugServer.signalClientException"></a>
 <h4>DebugServer.signalClientException</h4>
-<b>signalClientException</b>(<i>exceptionType, exceptionMessage, stackTrace</i>)
+<b>signalClientException</b>(<i>exceptionType, exceptionMessage, stackTrace, debuggerId</i>)
 
 <p>
         Public method to process the exception info from the client.
 </p>
 <dl>
 
-<dt><i>exceptionType</i></dt>
-<dd>
-type of exception raised (string)
-</dd>
-<dt><i>exceptionMessage</i></dt>
-<dd>
-message given by the exception (string)
-</dd>
-<dt><i>stackTrace</i></dt>
+<dt><i>exceptionType</i> (str)</dt>
+<dd>
+type of exception raised
+</dd>
+<dt><i>exceptionMessage</i> (str)</dt>
+<dd>
+message given by the exception
+</dd>
+<dt><i>stackTrace</i> (list)</dt>
 <dd>
 list of stack entries with the exception position
             first. Each stack entry is a list giving the filename and the
             linenumber.
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugServer.signalClientExit" ID="DebugServer.signalClientExit"></a>
 <h4>DebugServer.signalClientExit</h4>
-<b>signalClientExit</b>(<i>status, message=""</i>)
+<b>signalClientExit</b>(<i>program, status, message, debuggerId</i>)
 
 <p>
         Public method to process the client exit status.
 </p>
 <dl>
 
+<dt><i>program</i> (str)</dt>
+<dd>
+name of the exited program
+</dd>
 <dt><i>status</i> (int)</dt>
 <dd>
 exit code
@@ -2496,64 +2841,80 @@
 <dd>
 message sent with the exit
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugServer.signalClientLine" ID="DebugServer.signalClientLine"></a>
 <h4>DebugServer.signalClientLine</h4>
-<b>signalClientLine</b>(<i>filename, lineno, forStack=False</i>)
+<b>signalClientLine</b>(<i>filename, lineno, debuggerId, forStack=False</i>)
 
 <p>
         Public method to process client position feedback.
 </p>
 <dl>
 
-<dt><i>filename</i></dt>
-<dd>
-name of the file currently being executed (string)
-</dd>
-<dt><i>lineno</i></dt>
-<dd>
-line of code currently being executed (integer)
-</dd>
-<dt><i>forStack</i></dt>
-<dd>
-flag indicating this is for a stack dump (boolean)
+<dt><i>filename</i> (str)</dt>
+<dd>
+name of the file currently being executed
+</dd>
+<dt><i>lineno</i> (int)</dt>
+<dd>
+line of code currently being executed
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>forStack</i> (bool)</dt>
+<dd>
+flag indicating this is for a stack dump
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientOutput" ID="DebugServer.signalClientOutput"></a>
 <h4>DebugServer.signalClientOutput</h4>
-<b>signalClientOutput</b>(<i>line</i>)
+<b>signalClientOutput</b>(<i>line, debuggerId</i>)
 
 <p>
         Public method to process a line of client output.
 </p>
 <dl>
 
-<dt><i>line</i></dt>
-<dd>
-client output (string)
+<dt><i>line</i> (str)</dt>
+<dd>
+client output
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientRawInput" ID="DebugServer.signalClientRawInput"></a>
 <h4>DebugServer.signalClientRawInput</h4>
-<b>signalClientRawInput</b>(<i>prompt, echo</i>)
+<b>signalClientRawInput</b>(<i>prompt, echo, debuggerId</i>)
 
 <p>
         Public method to process the client raw input command.
 </p>
 <dl>
 
-<dt><i>prompt</i></dt>
-<dd>
-the input prompt (string)
-</dd>
-<dt><i>echo</i></dt>
-<dd>
-flag indicating an echoing of the input (boolean)
+<dt><i>prompt</i> (str)</dt>
+<dd>
+the input prompt
+</dd>
+<dt><i>echo</i> (bool)</dt>
+<dd>
+flag indicating an echoing of the input
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientSignal" ID="DebugServer.signalClientSignal"></a>
 <h4>DebugServer.signalClientSignal</h4>
-<b>signalClientSignal</b>(<i>message, filename, lineNo, funcName, funcArgs</i>)
+<b>signalClientSignal</b>(<i>message, filename, lineNo, funcName, funcArgs, debuggerId</i>)
 
 <p>
         Public method to process a signal generated on the client side.
@@ -2580,142 +2941,185 @@
 <dd>
 function arguments
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugServer.signalClientStack" ID="DebugServer.signalClientStack"></a>
 <h4>DebugServer.signalClientStack</h4>
-<b>signalClientStack</b>(<i>stack</i>)
+<b>signalClientStack</b>(<i>stack, debuggerId</i>)
 
 <p>
         Public method to process a client's stack information.
 </p>
 <dl>
 
-<dt><i>stack</i></dt>
+<dt><i>stack</i> (list of lists of (string, integer, string))</dt>
 <dd>
 list of stack entries. Each entry is a tuple of three
             values giving the filename, linenumber and method
-            (list of lists of (string, integer, string))
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientStatement" ID="DebugServer.signalClientStatement"></a>
 <h4>DebugServer.signalClientStatement</h4>
-<b>signalClientStatement</b>(<i>more</i>)
+<b>signalClientStatement</b>(<i>more, debuggerId</i>)
 
 <p>
         Public method to process the input response from the client.
 </p>
 <dl>
 
-<dt><i>more</i></dt>
+<dt><i>more</i> (bool)</dt>
 <dd>
 flag indicating that more user input is required
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugServer.signalClientSyntaxError" ID="DebugServer.signalClientSyntaxError"></a>
 <h4>DebugServer.signalClientSyntaxError</h4>
-<b>signalClientSyntaxError</b>(<i>message, filename, lineNo, characterNo</i>)
+<b>signalClientSyntaxError</b>(<i>message, filename, lineNo, characterNo, debuggerId</i>)
 
 <p>
-        Public method to process the syntax error info from the client.
+        Public method to process a syntax error info from the client.
 </p>
 <dl>
 
-<dt><i>message</i></dt>
-<dd>
-message of the syntax error (string)
-</dd>
-<dt><i>filename</i></dt>
+<dt><i>message</i> (str)</dt>
+<dd>
+message of the syntax error
+</dd>
+<dt><i>filename</i> (str)</dt>
 <dd>
 translated filename of the syntax error position
-            (string)
-</dd>
-<dt><i>lineNo</i></dt>
-<dd>
-line number of the syntax error position (integer)
-</dd>
-<dt><i>characterNo</i></dt>
+</dd>
+<dt><i>lineNo</i> (int)</dt>
+<dd>
+line number of the syntax error position
+</dd>
+<dt><i>characterNo</i> (int)</dt>
 <dd>
 character number of the syntax error position
-            (integer)
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugServer.signalClientThreadList" ID="DebugServer.signalClientThreadList"></a>
 <h4>DebugServer.signalClientThreadList</h4>
-<b>signalClientThreadList</b>(<i>currentId, threadList</i>)
+<b>signalClientThreadList</b>(<i>currentId, threadList, debuggerId</i>)
 
 <p>
         Public method to process the client thread list info.
 </p>
 <dl>
 
-<dt><i>currentId</i></dt>
-<dd>
-id of the current thread (integer)
-</dd>
-<dt><i>threadList</i></dt>
+<dt><i>currentId</i> (int)</dt>
+<dd>
+id of the current thread
+</dd>
+<dt><i>threadList</i> (list of dict)</dt>
 <dd>
 list of dictionaries containing the thread data
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugServer.signalClientThreadSet" ID="DebugServer.signalClientThreadSet"></a>
 <h4>DebugServer.signalClientThreadSet</h4>
-<b>signalClientThreadSet</b>(<i></i>)
+<b>signalClientThreadSet</b>(<i>debuggerId</i>)
 
 <p>
         Public method to handle the change of the client thread.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugServer.signalClientVariable" ID="DebugServer.signalClientVariable"></a>
 <h4>DebugServer.signalClientVariable</h4>
-<b>signalClientVariable</b>(<i>scope, variables</i>)
+<b>signalClientVariable</b>(<i>scope, variables, debuggerId</i>)
 
 <p>
         Public method to process the client variable info.
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>scope</i> (int)</dt>
 <dd>
 scope of the variables (-1 = empty global, 1 = global,
             0 = local)
 </dd>
-<dt><i>variables</i></dt>
+<dt><i>variables</i> (list)</dt>
 <dd>
 the list of members of a classvariable from the client
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugServer.signalClientVariables" ID="DebugServer.signalClientVariables"></a>
 <h4>DebugServer.signalClientVariables</h4>
-<b>signalClientVariables</b>(<i>scope, variables</i>)
+<b>signalClientVariables</b>(<i>scope, variables, debuggerId</i>)
 
 <p>
         Public method to process the client variables info.
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>scope</i> (int)</dt>
 <dd>
 scope of the variables (-1 = empty global, 1 = global,
             0 = local)
 </dd>
-<dt><i>variables</i></dt>
+<dt><i>variables</i> (list)</dt>
 <dd>
 the list of variables from the client
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugServer.signalClientWatchConditionError" ID="DebugServer.signalClientWatchConditionError"></a>
 <h4>DebugServer.signalClientWatchConditionError</h4>
-<b>signalClientWatchConditionError</b>(<i>condition</i>)
+<b>signalClientWatchConditionError</b>(<i>condition, debuggerId</i>)
 
 <p>
         Public method to process the client watch expression error info.
 </p>
 <dl>
 
-<dt><i>condition</i></dt>
-<dd>
-expression of watch expression to clear (string)
+<dt><i>condition</i> (str)</dt>
+<dd>
+expression of watch expression to clear
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
+<a NAME="DebugServer.signalLastClientExited" ID="DebugServer.signalLastClientExited"></a>
+<h4>DebugServer.signalLastClientExited</h4>
+<b>signalLastClientExited</b>(<i></i>)
+
+<p>
+        Public method to process the last client exit event.
+</p>
 <a NAME="DebugServer.startClient" ID="DebugServer.startClient"></a>
 <h4>DebugServer.startClient</h4>
 <b>startClient</b>(<i>unplanned=True, clType=None, forProject=False, runInConsole=False, venvName="", workingDir=None</i>)
@@ -2725,28 +3129,28 @@
 </p>
 <dl>
 
-<dt><i>unplanned=</i> (bool)</dt>
+<dt><i>unplanned</i> (bool)</dt>
 <dd>
 flag indicating that the client has died
 </dd>
-<dt><i>clType=</i> (str)</dt>
+<dt><i>clType</i> (str)</dt>
 <dd>
 type of client to be started
 </dd>
-<dt><i>forProject=</i> (bool)</dt>
+<dt><i>forProject</i> (bool)</dt>
 <dd>
 flag indicating a project related action
 </dd>
-<dt><i>runInConsole=</i> (bool)</dt>
+<dt><i>runInConsole</i> (bool)</dt>
 <dd>
 flag indicating to start the debugger in a
             console window
 </dd>
-<dt><i>venvName=</i> (str)</dt>
+<dt><i>venvName</i> (str)</dt>
 <dd>
 name of the virtual environment to be used
 </dd>
-<dt><i>workingDir=</i> (str)</dt>
+<dt><i>workingDir</i> (str)</dt>
 <dd>
 directory to start the debugger client in
 </dd>
--- a/eric6/Documentation/Source/eric6.Debugger.DebugUI.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.DebugUI.html	Thu Dec 17 14:40:06 2020 +0100
@@ -60,9 +60,10 @@
 emitted when the client program has terminated
         and the display of the termination dialog is suppressed
 </dd>
-<dt>clientStack(stack)</dt>
+<dt>clientStack(stack, debuggerId)</dt>
 <dd>
-emitted at breaking after a reported exception
+emitted at breaking after a reported
+        exception
 </dd>
 <dt>compileForms()</dt>
 <dd>
@@ -254,6 +255,10 @@
 <td>Private method to get the list of threads from the client.</td>
 </tr>
 <tr>
+<td><a href="#DebugUI.__lastClientExited">__lastClientExited</a></td>
+<td>Private slot handling the exit of the last client.</td>
+</tr>
+<tr>
 <td><a href="#DebugUI.__lastEditorClosed">__lastEditorClosed</a></td>
 <td>Private slot to handle the closeProgram signal.</td>
 </tr>
@@ -350,6 +355,14 @@
 <td>Public method to get a list of all actions.</td>
 </tr>
 <tr>
+<td><a href="#DebugUI.getDebuggerData">getDebuggerData</a></td>
+<td>Public method to refresh the debugging data of a specific debugger backend.</td>
+</tr>
+<tr>
+<td><a href="#DebugUI.getSelectedDebuggerId">getSelectedDebuggerId</a></td>
+<td>Public method to get the currently selected debugger ID.</td>
+</tr>
+<tr>
 <td><a href="#DebugUI.initActions">initActions</a></td>
 <td>Public method defining the user interface actions.</td>
 </tr>
@@ -374,6 +387,10 @@
 <td>Public slot to initialize the autoContinue flag.</td>
 </tr>
 <tr>
+<td><a href="#DebugUI.setDebugActionsEnabled">setDebugActionsEnabled</a></td>
+<td>Public method to set the enabled state of the debug actions.</td>
+</tr>
+<tr>
 <td><a href="#DebugUI.setEnvHistory">setEnvHistory</a></td>
 <td>Public slot to initialize the env history.</td>
 </tr>
@@ -390,6 +407,10 @@
 <td>Public slot to initialize the exception reporting flag.</td>
 </tr>
 <tr>
+<td><a href="#DebugUI.setMultiprocessNoDebugHistory">setMultiprocessNoDebugHistory</a></td>
+<td>Public slot to initialize the no debug list history.</td>
+</tr>
+<tr>
 <td><a href="#DebugUI.setTracePython">setTracePython</a></td>
 <td>Public slot to initialize the trace Python flag.</td>
 </tr>
@@ -398,6 +419,10 @@
 <td>Public slot to initialize the wd history.</td>
 </tr>
 <tr>
+<td><a href="#DebugUI.showNotification">showNotification</a></td>
+<td>Public method to show some notification message.</td>
+</tr>
+<tr>
 <td><a href="#DebugUI.shutdown">shutdown</a></td>
 <td>Public method to perform shutdown actions.</td>
 </tr>
@@ -483,53 +508,65 @@
 </p>
 <a NAME="DebugUI.__clientBreakConditionError" ID="DebugUI.__clientBreakConditionError"></a>
 <h4>DebugUI.__clientBreakConditionError</h4>
-<b>__clientBreakConditionError</b>(<i>filename, lineno</i>)
+<b>__clientBreakConditionError</b>(<i>filename, lineno, debuggerId</i>)
 
 <p>
         Private method to handle a condition error of a breakpoint.
 </p>
 <dl>
 
-<dt><i>filename</i></dt>
+<dt><i>filename</i> (str)</dt>
 <dd>
-filename of the breakpoint (string)
+filename of the breakpoint
 </dd>
-<dt><i>lineno</i></dt>
+<dt><i>lineno</i> (int)</dt>
 <dd>
-linenumber of the breakpoint (integer)
+line umber of the breakpoint
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugUI.__clientException" ID="DebugUI.__clientException"></a>
 <h4>DebugUI.__clientException</h4>
-<b>__clientException</b>(<i>exceptionType, exceptionMessage, stackTrace</i>)
+<b>__clientException</b>(<i>exceptionType, exceptionMessage, stackTrace, debuggerId</i>)
 
 <p>
         Private method to handle an exception of the debugged program.
 </p>
 <dl>
 
-<dt><i>exceptionType</i></dt>
+<dt><i>exceptionType</i> (str)</dt>
 <dd>
-type of exception raised (string)
+type of exception raised
 </dd>
-<dt><i>exceptionMessage</i></dt>
+<dt><i>exceptionMessage</i> ((str)</dt>
 <dd>
-message given by the exception (string)
+message given by the exception
 </dd>
-<dt><i>stackTrace</i></dt>
+<dt><i>stackTrace</i> (list of str)</dt>
 <dd>
-list of stack entries (list of string)
+list of stack entries
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugUI.__clientExit" ID="DebugUI.__clientExit"></a>
 <h4>DebugUI.__clientExit</h4>
-<b>__clientExit</b>(<i>status, message, quiet</i>)
+<b>__clientExit</b>(<i>program, status, message, quiet</i>)
 
 <p>
         Private method to handle the debugged program terminating.
 </p>
 <dl>
 
+<dt><i>program</i> (str)</dt>
+<dd>
+name of the exited program
+</dd>
 <dt><i>status</i> (int)</dt>
 <dd>
 exit code of the debugged program
@@ -559,29 +596,33 @@
 </dl>
 <a NAME="DebugUI.__clientLine" ID="DebugUI.__clientLine"></a>
 <h4>DebugUI.__clientLine</h4>
-<b>__clientLine</b>(<i>fn, line, forStack</i>)
+<b>__clientLine</b>(<i>fn, line, debuggerId, forStack</i>)
 
 <p>
         Private method to handle a change to the current line.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-filename (string)
+filename
 </dd>
-<dt><i>line</i></dt>
+<dt><i>line</i> (int)</dt>
 <dd>
-linenumber (int)
+linenumber
 </dd>
-<dt><i>forStack</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-flag indicating this is for a stack dump (boolean)
+ID of the debugger backend
+</dd>
+<dt><i>forStack</i> (bool)</dt>
+<dd>
+flag indicating this is for a stack dump
 </dd>
 </dl>
 <a NAME="DebugUI.__clientSignal" ID="DebugUI.__clientSignal"></a>
 <h4>DebugUI.__clientSignal</h4>
-<b>__clientSignal</b>(<i>message, filename, lineNo, funcName, funcArgs</i>)
+<b>__clientSignal</b>(<i>message, filename, lineNo, funcName, funcArgs, debuggerId</i>)
 
 <p>
         Private method to handle a signal generated on the client side.
@@ -608,6 +649,10 @@
 <dd>
 function arguments
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugUI.__clientSyntaxError" ID="DebugUI.__clientSyntaxError"></a>
 <h4>DebugUI.__clientSyntaxError</h4>
@@ -639,14 +684,21 @@
 </dl>
 <a NAME="DebugUI.__clientThreadSet" ID="DebugUI.__clientThreadSet"></a>
 <h4>DebugUI.__clientThreadSet</h4>
-<b>__clientThreadSet</b>(<i></i>)
+<b>__clientThreadSet</b>(<i>debuggerId</i>)
 
 <p>
         Private method to handle a change of the client's current thread.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__clientVariable" ID="DebugUI.__clientVariable"></a>
 <h4>DebugUI.__clientVariable</h4>
-<b>__clientVariable</b>(<i>scope, variables</i>)
+<b>__clientVariable</b>(<i>scope, variables, debuggerId</i>)
 
 <p>
         Private method to write the contents of a clients classvariable to
@@ -654,38 +706,46 @@
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>scope</i> (int)</dt>
 <dd>
-scope of the variables (-1 = empty global, 1 = global,
+scope of the variables (-1 = empty locals, 1 = global,
             0 = local)
 </dd>
-<dt><i>variables</i></dt>
+<dt><i>variables</i> (list)</dt>
 <dd>
-the list of members of a classvariable from the client
+the list of variables from the client
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugUI.__clientVariables" ID="DebugUI.__clientVariables"></a>
 <h4>DebugUI.__clientVariables</h4>
-<b>__clientVariables</b>(<i>scope, variables</i>)
+<b>__clientVariables</b>(<i>scope, variables, debuggerId</i>)
 
 <p>
         Private method to write the clients variables to the user interface.
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>scope</i> (int)</dt>
 <dd>
-scope of the variables (-1 = empty global, 1 = global,
+scope of the variables (-1 = empty locals, 1 = global,
             0 = local)
 </dd>
-<dt><i>variables</i></dt>
+<dt><i>variables</i> (list)</dt>
 <dd>
 the list of variables from the client
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugUI.__clientWatchConditionError" ID="DebugUI.__clientWatchConditionError"></a>
 <h4>DebugUI.__clientWatchConditionError</h4>
-<b>__clientWatchConditionError</b>(<i>cond</i>)
+<b>__clientWatchConditionError</b>(<i>cond, debuggerId</i>)
 
 <p>
         Private method to handle a expression error of a watch expression.
@@ -695,9 +755,13 @@
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
+<dt><i>cond</i> (str)</dt>
 <dd>
-expression of the watch expression (string)
+expression of the watch expression
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebugUI.__compileChangedProjectFiles" ID="DebugUI.__compileChangedProjectFiles"></a>
@@ -731,11 +795,18 @@
 </p>
 <a NAME="DebugUI.__continue" ID="DebugUI.__continue"></a>
 <h4>DebugUI.__continue</h4>
-<b>__continue</b>(<i></i>)
+<b>__continue</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to handle the Continue action.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__coverageProject" ID="DebugUI.__coverageProject"></a>
 <h4>DebugUI.__coverageProject</h4>
 <b>__coverageProject</b>(<i></i>)
@@ -880,14 +951,21 @@
 </p>
 <a NAME="DebugUI.__getClientDisassembly" ID="DebugUI.__getClientDisassembly"></a>
 <h4>DebugUI.__getClientDisassembly</h4>
-<b>__getClientDisassembly</b>(<i></i>)
+<b>__getClientDisassembly</b>(<i>debuggerId</i>)
 
 <p>
         Private method to ask the client for the latest traceback disassembly.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__getClientVariables" ID="DebugUI.__getClientVariables"></a>
 <h4>DebugUI.__getClientVariables</h4>
-<b>__getClientVariables</b>(<i></i>)
+<b>__getClientVariables</b>(<i>debuggerId</i>)
 
 <p>
         Private method to request the global and local variables.
@@ -897,13 +975,34 @@
         Once these have been received, the local variables are requested.
         This happens in the method '__clientVariables'.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__getThreadList" ID="DebugUI.__getThreadList"></a>
 <h4>DebugUI.__getThreadList</h4>
-<b>__getThreadList</b>(<i></i>)
+<b>__getThreadList</b>(<i>debuggerId</i>)
 
 <p>
         Private method to get the list of threads from the client.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
+<a NAME="DebugUI.__lastClientExited" ID="DebugUI.__lastClientExited"></a>
+<h4>DebugUI.__lastClientExited</h4>
+<b>__lastClientExited</b>(<i></i>)
+
+<p>
+        Private slot handling the exit of the last client.
+</p>
 <a NAME="DebugUI.__lastEditorClosed" ID="DebugUI.__lastEditorClosed"></a>
 <h4>DebugUI.__lastEditorClosed</h4>
 <b>__lastEditorClosed</b>(<i></i>)
@@ -913,11 +1012,18 @@
 </p>
 <a NAME="DebugUI.__moveInstructionPointer" ID="DebugUI.__moveInstructionPointer"></a>
 <h4>DebugUI.__moveInstructionPointer</h4>
-<b>__moveInstructionPointer</b>(<i></i>)
+<b>__moveInstructionPointer</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to move the instruction pointer to a different line.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__nextBreakpoint" ID="DebugUI.__nextBreakpoint"></a>
 <h4>DebugUI.__nextBreakpoint</h4>
 <b>__nextBreakpoint</b>(<i></i>)
@@ -1001,11 +1107,18 @@
 </p>
 <a NAME="DebugUI.__runToCursor" ID="DebugUI.__runToCursor"></a>
 <h4>DebugUI.__runToCursor</h4>
-<b>__runToCursor</b>(<i></i>)
+<b>__runToCursor</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to handle the Run to Cursor action.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__showBreakpointsMenu" ID="DebugUI.__showBreakpointsMenu"></a>
 <h4>DebugUI.__showBreakpointsMenu</h4>
 <b>__showBreakpointsMenu</b>(<i></i>)
@@ -1022,39 +1135,74 @@
 </p>
 <a NAME="DebugUI.__specialContinue" ID="DebugUI.__specialContinue"></a>
 <h4>DebugUI.__specialContinue</h4>
-<b>__specialContinue</b>(<i></i>)
+<b>__specialContinue</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to handle the Special Continue action.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__step" ID="DebugUI.__step"></a>
 <h4>DebugUI.__step</h4>
-<b>__step</b>(<i></i>)
+<b>__step</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to handle the Step action.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__stepOut" ID="DebugUI.__stepOut"></a>
 <h4>DebugUI.__stepOut</h4>
-<b>__stepOut</b>(<i></i>)
+<b>__stepOut</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to handle the Step Out action.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__stepOver" ID="DebugUI.__stepOver"></a>
 <h4>DebugUI.__stepOver</h4>
-<b>__stepOver</b>(<i></i>)
+<b>__stepOver</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to handle the Step Over action.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__stepQuit" ID="DebugUI.__stepQuit"></a>
 <h4>DebugUI.__stepQuit</h4>
-<b>__stepQuit</b>(<i></i>)
+<b>__stepQuit</b>(<i>debuggerId=""</i>)
 
 <p>
         Private method to handle the Step Quit action.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebugUI.__stopScript" ID="DebugUI.__stopScript"></a>
 <h4>DebugUI.__stopScript</h4>
 <b>__stopScript</b>(<i></i>)
@@ -1089,6 +1237,40 @@
 list of all actions (list of E5Action)
 </dd>
 </dl>
+<a NAME="DebugUI.getDebuggerData" ID="DebugUI.getDebuggerData"></a>
+<h4>DebugUI.getDebuggerData</h4>
+<b>getDebuggerData</b>(<i>debuggerId</i>)
+
+<p>
+        Public method to refresh the debugging data of a specific debugger
+        backend.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
+<a NAME="DebugUI.getSelectedDebuggerId" ID="DebugUI.getSelectedDebuggerId"></a>
+<h4>DebugUI.getSelectedDebuggerId</h4>
+<b>getSelectedDebuggerId</b>(<i></i>)
+
+<p>
+        Public method to get the currently selected debugger ID.
+</p>
+<dl>
+<dt>Returns:</dt>
+<dd>
+selected debugger ID
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
 <a NAME="DebugUI.initActions" ID="DebugUI.initActions"></a>
 <h4>DebugUI.initActions</h4>
 <b>initActions</b>(<i></i>)
@@ -1183,6 +1365,20 @@
             stop at the first executable line (boolean)
 </dd>
 </dl>
+<a NAME="DebugUI.setDebugActionsEnabled" ID="DebugUI.setDebugActionsEnabled"></a>
+<h4>DebugUI.setDebugActionsEnabled</h4>
+<b>setDebugActionsEnabled</b>(<i>enable</i>)
+
+<p>
+        Public method to set the enabled state of the debug actions.
+</p>
+<dl>
+
+<dt><i>enable</i> (bool)</dt>
+<dd>
+enable state to be set
+</dd>
+</dl>
 <a NAME="DebugUI.setEnvHistory" ID="DebugUI.setEnvHistory"></a>
 <h4>DebugUI.setEnvHistory</h4>
 <b>setEnvHistory</b>(<i>envStr, clearHistories=False, history=None</i>)
@@ -1248,6 +1444,29 @@
 flag indicating exception reporting status (boolean)
 </dd>
 </dl>
+<a NAME="DebugUI.setMultiprocessNoDebugHistory" ID="DebugUI.setMultiprocessNoDebugHistory"></a>
+<h4>DebugUI.setMultiprocessNoDebugHistory</h4>
+<b>setMultiprocessNoDebugHistory</b>(<i>noDebugList, clearHistories=False, history=None</i>)
+
+<p>
+        Public slot to initialize the no debug list history.
+</p>
+<dl>
+
+<dt><i>noDebugList</i> (str)</dt>
+<dd>
+whitespace separated list of progframs not to be
+            debugged
+</dd>
+<dt><i>clearHistories</i> (bool)</dt>
+<dd>
+flag indicating, that the list should be cleared
+</dd>
+<dt><i>history</i> (list of str)</dt>
+<dd>
+list of history entries to be set
+</dd>
+</dl>
 <a NAME="DebugUI.setTracePython" ID="DebugUI.setTracePython"></a>
 <h4>DebugUI.setTracePython</h4>
 <b>setTracePython</b>(<i>tracePython</i>)
@@ -1286,6 +1505,20 @@
 list of history entries to be set (list of strings)
 </dd>
 </dl>
+<a NAME="DebugUI.showNotification" ID="DebugUI.showNotification"></a>
+<h4>DebugUI.showNotification</h4>
+<b>showNotification</b>(<i>notification</i>)
+
+<p>
+        Public method to show some notification message.
+</p>
+<dl>
+
+<dt><i>notification</i> (str)</dt>
+<dd>
+meessage to be shown
+</dd>
+</dl>
 <a NAME="DebugUI.shutdown" ID="DebugUI.shutdown"></a>
 <h4>DebugUI.shutdown</h4>
 <b>shutdown</b>(<i></i>)
@@ -1326,7 +1559,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-filters list (list of integers)
+filters list
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Debugger.DebugViewer.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.DebugViewer.html	Thu Dec 17 14:40:06 2020 +0100
@@ -28,15 +28,15 @@
 <p>
 The views avaliable are:
 <ul>
-  <li>variables viewer for global variables</li>
-  <li>variables viewer for local variables</li>
+  <li>selector showing all connected debugger backends</li>
+  <li>variables viewer for global variables for the selected debug client</li>
+  <li>variables viewer for local variables for the selected debug client</li>
+  <li>call stack viewer for the selected debug client</li>
   <li>call trace viewer</li>
   <li>viewer for breakpoints</li>
   <li>viewer for watch expressions</li>
   <li>viewer for exceptions</li>
-  <li>viewer for threads</li>
-  <li>a file browser (optional)</li>
-  <li>an interpreter shell (optional)</li>
+  <li>viewer for threads for the selected debug client</li>
 </ul>
 </p>
 <h3>Global Attributes</h3>
@@ -89,7 +89,7 @@
 <h3>Class Attributes</h3>
 
 <table>
-<tr><td>None</td></tr>
+<tr><td>ThreadIdRole</td></tr>
 </table>
 <h3>Class Methods</h3>
 
@@ -109,10 +109,46 @@
 <td>Private slot to handle the selection of a call stack entry of the call stack viewer.</td>
 </tr>
 <tr>
+<td><a href="#DebugViewer.__clientDebuggerId">__clientDebuggerId</a></td>
+<td>Private slot to receive the ID of a newly connected debugger backend.</td>
+</tr>
+<tr>
+<td><a href="#DebugViewer.__clientException">__clientException</a></td>
+<td>Private method to handle an exception of the debugged program.</td>
+</tr>
+<tr>
+<td><a href="#DebugViewer.__clientExit">__clientExit</a></td>
+<td>Private method to handle the debugged program terminating.</td>
+</tr>
+<tr>
+<td><a href="#DebugViewer.__clientLine">__clientLine</a></td>
+<td>Private method to handle a change to the current line.</td>
+</tr>
+<tr>
+<td><a href="#DebugViewer.__clientSyntaxError">__clientSyntaxError</a></td>
+<td>Private method to handle a syntax error in the debugged program.</td>
+</tr>
+<tr>
+<td><a href="#DebugViewer.__debuggerSelected">__debuggerSelected</a></td>
+<td>Private slot to handle the selection of a debugger backend in the debuggers list.</td>
+</tr>
+<tr>
 <td><a href="#DebugViewer.__frameSelected">__frameSelected</a></td>
 <td>Private slot to handle the selection of a new stack frame number.</td>
 </tr>
 <tr>
+<td><a href="#DebugViewer.__removeDebugger">__removeDebugger</a></td>
+<td>Private method to remove a debugger given its ID.</td>
+</tr>
+<tr>
+<td><a href="#DebugViewer.__setCurrentDebugger">__setCurrentDebugger</a></td>
+<td>Private method to set the current debugger based on the given ID.</td>
+</tr>
+<tr>
+<td><a href="#DebugViewer.__setDebuggerIconAndState">__setDebuggerIconAndState</a></td>
+<td>Private method to set the icon for a specific debugger ID.</td>
+</tr>
+<tr>
 <td><a href="#DebugViewer.__showSource">__showSource</a></td>
 <td>Private slot to handle the source button press to show the selected file.</td>
 </tr>
@@ -129,6 +165,14 @@
 <td>Public method to get a reference to the current widget.</td>
 </tr>
 <tr>
+<td><a href="#DebugViewer.getSelectedDebuggerId">getSelectedDebuggerId</a></td>
+<td>Public method to get the currently selected debugger ID.</td>
+</tr>
+<tr>
+<td><a href="#DebugViewer.getSelectedDebuggerState">getSelectedDebuggerState</a></td>
+<td>Public method to get the currently selected debugger's state.</td>
+</tr>
+<tr>
 <td><a href="#DebugViewer.handleClientStack">handleClientStack</a></td>
 <td>Public slot to show the call stack of the program being debugged.</td>
 </tr>
@@ -142,7 +186,7 @@
 </tr>
 <tr>
 <td><a href="#DebugViewer.handleResetUI">handleResetUI</a></td>
-<td>Public method to reset the SBVviewer.</td>
+<td>Public method to reset the viewer.</td>
 </tr>
 <tr>
 <td><a href="#DebugViewer.initCallStackViewer">initCallStackViewer</a></td>
@@ -208,13 +252,13 @@
 </p>
 <dl>
 
-<dt><i>debugServer</i></dt>
+<dt><i>debugServer</i> (DebugServer)</dt>
 <dd>
-reference to the debug server object (DebugServer)
+reference to the debug server object
 </dd>
-<dt><i>parent</i></dt>
+<dt><i>parent</i> (QWidget)</dt>
 <dd>
-parent widget (QWidget)
+parent widget
 </dd>
 </dl>
 <a NAME="DebugViewer.__callStackFrameSelected" ID="DebugViewer.__callStackFrameSelected"></a>
@@ -227,9 +271,150 @@
 </p>
 <dl>
 
-<dt><i>frameNo</i></dt>
+<dt><i>frameNo</i> (int)</dt>
+<dd>
+frame number (index) of the selected entry
+</dd>
+</dl>
+<a NAME="DebugViewer.__clientDebuggerId" ID="DebugViewer.__clientDebuggerId"></a>
+<h4>DebugViewer.__clientDebuggerId</h4>
+<b>__clientDebuggerId</b>(<i>debuggerId</i>)
+
+<p>
+        Private slot to receive the ID of a newly connected debugger backend.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of a newly connected debugger backend
+</dd>
+</dl>
+<a NAME="DebugViewer.__clientException" ID="DebugViewer.__clientException"></a>
+<h4>DebugViewer.__clientException</h4>
+<b>__clientException</b>(<i>exceptionType, exceptionMessage, stackTrace, debuggerId</i>)
+
+<p>
+        Private method to handle an exception of the debugged program.
+</p>
+<dl>
+
+<dt><i>exceptionType</i> (str)</dt>
+<dd>
+type of exception raised
+</dd>
+<dt><i>exceptionMessage</i> ((str)</dt>
+<dd>
+message given by the exception
+</dd>
+<dt><i>stackTrace</i> (list of str)</dt>
+<dd>
+list of stack entries
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
+<a NAME="DebugViewer.__clientExit" ID="DebugViewer.__clientExit"></a>
+<h4>DebugViewer.__clientExit</h4>
+<b>__clientExit</b>(<i>program, status, message, quiet, debuggerId</i>)
+
+<p>
+        Private method to handle the debugged program terminating.
+</p>
+<dl>
+
+<dt><i>program</i> (str)</dt>
+<dd>
+name of the exited program
+</dd>
+<dt><i>status</i> (int)</dt>
+<dd>
+exit code of the debugged program
+</dd>
+<dt><i>message</i> (str)</dt>
+<dd>
+exit message of the debugged program
+</dd>
+<dt><i>quiet</i> (bool)</dt>
+<dd>
+flag indicating to suppress exit info display
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-frame number (index) of the selected entry (integer)
+ID of the debugger backend
+</dd>
+</dl>
+<a NAME="DebugViewer.__clientLine" ID="DebugViewer.__clientLine"></a>
+<h4>DebugViewer.__clientLine</h4>
+<b>__clientLine</b>(<i>fn, line, debuggerId</i>)
+
+<p>
+        Private method to handle a change to the current line.
+</p>
+<dl>
+
+<dt><i>fn</i> (str)</dt>
+<dd>
+filename
+</dd>
+<dt><i>line</i> (int)</dt>
+<dd>
+linenumber
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
+<a NAME="DebugViewer.__clientSyntaxError" ID="DebugViewer.__clientSyntaxError"></a>
+<h4>DebugViewer.__clientSyntaxError</h4>
+<b>__clientSyntaxError</b>(<i>message, filename, lineNo, characterNo, debuggerId</i>)
+
+<p>
+        Private method to handle a syntax error in the debugged program.
+</p>
+<dl>
+
+<dt><i>message</i> (str)</dt>
+<dd>
+message of the syntax error
+</dd>
+<dt><i>filename</i> (str)</dt>
+<dd>
+translated filename of the syntax error position
+</dd>
+<dt><i>lineNo</i> (int)</dt>
+<dd>
+line number of the syntax error position
+</dd>
+<dt><i>characterNo</i> (int)</dt>
+<dd>
+character number of the syntax error position
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
+<a NAME="DebugViewer.__debuggerSelected" ID="DebugViewer.__debuggerSelected"></a>
+<h4>DebugViewer.__debuggerSelected</h4>
+<b>__debuggerSelected</b>(<i>current, previous</i>)
+
+<p>
+        Private slot to handle the selection of a debugger backend in the
+        debuggers list.
+</p>
+<dl>
+
+<dt><i>current</i> (QTreeWidgetItem)</dt>
+<dd>
+reference to the new current item
+</dd>
+<dt><i>previous</i> (QTreeWidgetItem)</dt>
+<dd>
+reference to the previous current item
 </dd>
 </dl>
 <a NAME="DebugViewer.__frameSelected" ID="DebugViewer.__frameSelected"></a>
@@ -241,9 +426,60 @@
 </p>
 <dl>
 
-<dt><i>frmnr</i></dt>
+<dt><i>frmnr</i> (int)</dt>
+<dd>
+frame number (0 is the current frame)
+</dd>
+</dl>
+<a NAME="DebugViewer.__removeDebugger" ID="DebugViewer.__removeDebugger"></a>
+<h4>DebugViewer.__removeDebugger</h4>
+<b>__removeDebugger</b>(<i>debuggerId</i>)
+
+<p>
+        Private method to remove a debugger given its ID.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-frame number (0 is the current frame) (int)
+ID of the debugger to be removed from the list
+</dd>
+</dl>
+<a NAME="DebugViewer.__setCurrentDebugger" ID="DebugViewer.__setCurrentDebugger"></a>
+<h4>DebugViewer.__setCurrentDebugger</h4>
+<b>__setCurrentDebugger</b>(<i>debuggerId</i>)
+
+<p>
+        Private method to set the current debugger based on the given ID.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger to set as current debugger
+</dd>
+</dl>
+<a NAME="DebugViewer.__setDebuggerIconAndState" ID="DebugViewer.__setDebuggerIconAndState"></a>
+<h4>DebugViewer.__setDebuggerIconAndState</h4>
+<b>__setDebuggerIconAndState</b>(<i>debuggerId, iconName, state</i>)
+
+<p>
+        Private method to set the icon for a specific debugger ID.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend (empty ID means the
+            currently selected one)
+</dd>
+<dt><i>iconName</i> (str)</dt>
+<dd>
+name of the icon to be used
+</dd>
+<dt><i>state</i> (str)</dt>
+<dd>
+state of the debugger (broken, exception, running)
 </dd>
 </dl>
 <a NAME="DebugViewer.__showSource" ID="DebugViewer.__showSource"></a>
@@ -263,14 +499,13 @@
 </p>
 <dl>
 
-<dt><i>current</i></dt>
+<dt><i>current</i> (QTreeWidgetItem)</dt>
 <dd>
-reference to the new current item (QTreeWidgetItem)
+reference to the new current item
 </dd>
-<dt><i>previous</i></dt>
+<dt><i>previous</i> (QTreeWidgetItem)</dt>
 <dd>
 reference to the previous current item
-            (QTreeWidgetItem)
 </dd>
 </dl>
 <a NAME="DebugViewer.clearCallTrace" ID="DebugViewer.clearCallTrace"></a>
@@ -290,23 +525,71 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-reference to the current widget (QWidget)
+reference to the current widget
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QWidget
+</dd>
+</dl>
+<a NAME="DebugViewer.getSelectedDebuggerId" ID="DebugViewer.getSelectedDebuggerId"></a>
+<h4>DebugViewer.getSelectedDebuggerId</h4>
+<b>getSelectedDebuggerId</b>(<i></i>)
+
+<p>
+        Public method to get the currently selected debugger ID.
+</p>
+<dl>
+<dt>Returns:</dt>
+<dd>
+selected debugger ID
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="DebugViewer.getSelectedDebuggerState" ID="DebugViewer.getSelectedDebuggerState"></a>
+<h4>DebugViewer.getSelectedDebuggerState</h4>
+<b>getSelectedDebuggerState</b>(<i></i>)
+
+<p>
+        Public method to get the currently selected debugger's state.
+</p>
+<dl>
+<dt>Returns:</dt>
+<dd>
+selected debugger's state (broken, exception, running)
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
 </dd>
 </dl>
 <a NAME="DebugViewer.handleClientStack" ID="DebugViewer.handleClientStack"></a>
 <h4>DebugViewer.handleClientStack</h4>
-<b>handleClientStack</b>(<i>stack</i>)
+<b>handleClientStack</b>(<i>stack, debuggerId</i>)
 
 <p>
         Public slot to show the call stack of the program being debugged.
 </p>
 <dl>
 
-<dt><i>stack</i></dt>
+<dt><i>stack</i> (list of tuples of (str, str, str, str))</dt>
 <dd>
 list of tuples with call stack data (file name,
             line number, function name, formatted argument/values list)
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugViewer.handleDebuggingStarted" ID="DebugViewer.handleDebuggingStarted"></a>
 <h4>DebugViewer.handleDebuggingStarted</h4>
@@ -330,7 +613,7 @@
 <b>handleResetUI</b>(<i></i>)
 
 <p>
-        Public method to reset the SBVviewer.
+        Public method to reset the viewer.
 </p>
 <a NAME="DebugViewer.initCallStackViewer" ID="DebugViewer.initCallStackViewer"></a>
 <h4>DebugViewer.initCallStackViewer</h4>
@@ -341,9 +624,9 @@
 </p>
 <dl>
 
-<dt><i>projectMode</i></dt>
+<dt><i>projectMode</i> (bool)</dt>
 <dd>
-flag indicating to enable the project mode (boolean)
+flag indicating to enable the project mode
 </dd>
 </dl>
 <a NAME="DebugViewer.isCallTraceEnabled" ID="DebugViewer.isCallTraceEnabled"></a>
@@ -356,7 +639,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating the state of the call trace function (boolean)
+flag indicating the state of the call trace function
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="DebugViewer.setCallTraceToProjectMode" ID="DebugViewer.setCallTraceToProjectMode"></a>
@@ -372,9 +661,9 @@
 </p>
 <dl>
 
-<dt><i>enabled</i></dt>
+<dt><i>enabled</i> (bool)</dt>
 <dd>
-flag indicating to enable the project mode (boolean)
+flag indicating to enable the project mode
 </dd>
 </dl>
 <a NAME="DebugViewer.setCurrentWidget" ID="DebugViewer.setCurrentWidget"></a>
@@ -386,9 +675,9 @@
 </p>
 <dl>
 
-<dt><i>widget</i></dt>
+<dt><i>widget</i> (QWidget)</dt>
 <dd>
-reference to the widget (QWidget)
+reference to the widget
 </dd>
 </dl>
 <a NAME="DebugViewer.setDebugger" ID="DebugViewer.setDebugger"></a>
@@ -400,9 +689,9 @@
 </p>
 <dl>
 
-<dt><i>debugUI</i></dt>
+<dt><i>debugUI</i> (DebugUI)</dt>
 <dd>
-reference to the DebugUI object (DebugUI)
+reference to the DebugUI object
 </dd>
 </dl>
 <a NAME="DebugViewer.setGlobalsFilter" ID="DebugViewer.setGlobalsFilter"></a>
@@ -428,33 +717,36 @@
 </p>
 <dl>
 
-<dt><i>globalsFilter</i></dt>
+<dt><i>globalsFilter</i> (list of str)</dt>
 <dd>
 filter list for global variable types
-            (list of int)
 </dd>
-<dt><i>localsFilter</i></dt>
+<dt><i>localsFilter</i> (list of str)</dt>
 <dd>
-filter list for local variable types (list of int)
+filter list for local variable types
 </dd>
 </dl>
 <a NAME="DebugViewer.showThreadList" ID="DebugViewer.showThreadList"></a>
 <h4>DebugViewer.showThreadList</h4>
-<b>showThreadList</b>(<i>currentID, threadList</i>)
+<b>showThreadList</b>(<i>currentID, threadList, debuggerId</i>)
 
 <p>
         Public method to show the thread list.
 </p>
 <dl>
 
-<dt><i>currentID</i></dt>
+<dt><i>currentID</i> (int)</dt>
 <dd>
-id of the current thread (integer)
+id of the current thread
 </dd>
-<dt><i>threadList</i></dt>
+<dt><i>threadList</i> (list of dict)</dt>
 <dd>
 list of dictionaries containing the thread data
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 </dl>
 <a NAME="DebugViewer.showVariable" ID="DebugViewer.showVariable"></a>
 <h4>DebugViewer.showVariable</h4>
@@ -465,11 +757,11 @@
 </p>
 <dl>
 
-<dt><i>vlist</i></dt>
+<dt><i>vlist</i> (list)</dt>
 <dd>
 list of variables to display
 </dd>
-<dt><i>showGlobals</i></dt>
+<dt><i>showGlobals</i> (bool)</dt>
 <dd>
 flag indicating global/local state
 </dd>
@@ -483,11 +775,11 @@
 </p>
 <dl>
 
-<dt><i>vlist</i></dt>
+<dt><i>vlist</i> (list)</dt>
 <dd>
 list of variables to display
 </dd>
-<dt><i>showGlobals</i></dt>
+<dt><i>showGlobals</i> (bool)</dt>
 <dd>
 flag indicating global/local state
 </dd>
@@ -501,7 +793,7 @@
 </p>
 <dl>
 
-<dt><i>showGlobals</i></dt>
+<dt><i>showGlobals</i> (bool)</dt>
 <dd>
 flag indicating global/local state
 </dd>
--- a/eric6/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html	Thu Dec 17 14:40:06 2020 +0100
@@ -81,12 +81,12 @@
 <td>Constructor</td>
 </tr>
 <tr>
-<td><a href="#DebuggerInterfaceNone.flush">flush</a></td>
-<td>Public slot to flush the queue.</td>
+<td><a href="#DebuggerInterfaceNone.getClientCapabilities">getClientCapabilities</a></td>
+<td>Public method to retrieve the debug clients capabilities.</td>
 </tr>
 <tr>
-<td><a href="#DebuggerInterfaceNone.getClientCapabilities">getClientCapabilities</a></td>
-<td>Public method to retrieve the debug clients capabilities.</td>
+<td><a href="#DebuggerInterfaceNone.getDebuggerIds">getDebuggerIds</a></td>
+<td>Public method to return the IDs of the connected debugger backends.</td>
 </tr>
 <tr>
 <td><a href="#DebuggerInterfaceNone.isConnected">isConnected</a></td>
@@ -117,10 +117,18 @@
 <td>Public slot to get the debug clients capabilities.</td>
 </tr>
 <tr>
+<td><a href="#DebuggerInterfaceNone.remoteClientDisassembly">remoteClientDisassembly</a></td>
+<td>Public method to ask the client for the latest traceback disassembly.</td>
+</tr>
+<tr>
 <td><a href="#DebuggerInterfaceNone.remoteClientSetFilter">remoteClientSetFilter</a></td>
 <td>Public method to set a variables filter list.</td>
 </tr>
 <tr>
+<td><a href="#DebuggerInterfaceNone.remoteClientStack">remoteClientStack</a></td>
+<td>Public method to request the stack of the main thread.</td>
+</tr>
+<tr>
 <td><a href="#DebuggerInterfaceNone.remoteClientVariable">remoteClientVariable</a></td>
 <td>Public method to request the variables of the debugged program.</td>
 </tr>
@@ -145,10 +153,6 @@
 <td>Public method to set the environment for a program to debug, run, ...</td>
 </tr>
 <tr>
-<td><a href="#DebuggerInterfaceNone.remoteEval">remoteEval</a></td>
-<td>Public method to evaluate arg in the current context of the debugged program.</td>
-</tr>
-<tr>
 <td><a href="#DebuggerInterfaceNone.remoteLoad">remoteLoad</a></td>
 <td>Public method to load a new program to debug.</td>
 </tr>
@@ -157,6 +161,10 @@
 <td>Public method to move the instruction pointer to a different line.</td>
 </tr>
 <tr>
+<td><a href="#DebuggerInterfaceNone.remoteNoDebugList">remoteNoDebugList</a></td>
+<td>Public method to set a list of programs not to be debugged.</td>
+</tr>
+<tr>
 <td><a href="#DebuggerInterfaceNone.remoteProfile">remoteProfile</a></td>
 <td>Public method to load a new program to collect profiling data.</td>
 </tr>
@@ -256,22 +264,15 @@
 </p>
 <dl>
 
-<dt><i>debugServer</i></dt>
+<dt><i>debugServer</i> (DebugServer)</dt>
 <dd>
-reference to the debug server (DebugServer)
+reference to the debug server
 </dd>
-<dt><i>passive</i></dt>
+<dt><i>passive</i> (bool)</dt>
 <dd>
-flag indicating passive connection mode (boolean)
+flag indicating passive connection mode
 </dd>
 </dl>
-<a NAME="DebuggerInterfaceNone.flush" ID="DebuggerInterfaceNone.flush"></a>
-<h4>DebuggerInterfaceNone.flush</h4>
-<b>flush</b>(<i></i>)
-
-<p>
-        Public slot to flush the queue.
-</p>
 <a NAME="DebuggerInterfaceNone.getClientCapabilities" ID="DebuggerInterfaceNone.getClientCapabilities"></a>
 <h4>DebuggerInterfaceNone.getClientCapabilities</h4>
 <b>getClientCapabilities</b>(<i></i>)
@@ -282,7 +283,32 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-debug client capabilities (integer)
+debug client capabilities
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+int
+</dd>
+</dl>
+<a NAME="DebuggerInterfaceNone.getDebuggerIds" ID="DebuggerInterfaceNone.getDebuggerIds"></a>
+<h4>DebuggerInterfaceNone.getDebuggerIds</h4>
+<b>getDebuggerIds</b>(<i></i>)
+
+<p>
+        Public method to return the IDs of the connected debugger backends.
+</p>
+<dl>
+<dt>Returns:</dt>
+<dd>
+list of connected debugger backend IDs
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.isConnected" ID="DebuggerInterfaceNone.isConnected"></a>
@@ -295,7 +321,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating the connection status (boolean)
+flag indicating the connection status
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.newConnection" ID="DebuggerInterfaceNone.newConnection"></a>
@@ -307,15 +339,21 @@
 </p>
 <dl>
 
-<dt><i>sock</i></dt>
+<dt><i>sock</i> (QTcpSocket)</dt>
 <dd>
-reference to the socket object (QTcpSocket)
+reference to the socket object
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating success (boolean)
+flag indicating success
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteBanner" ID="DebuggerInterfaceNone.remoteBanner"></a>
@@ -327,120 +365,172 @@
 </p>
 <a NAME="DebuggerInterfaceNone.remoteBreakpoint" ID="DebuggerInterfaceNone.remoteBreakpoint"></a>
 <h4>DebuggerInterfaceNone.remoteBreakpoint</h4>
-<b>remoteBreakpoint</b>(<i>fn, line, setBreakpoint, cond=None, temp=False</i>)
+<b>remoteBreakpoint</b>(<i>debuggerId, fn, line, setBreakpoint, cond=None, temp=False</i>)
 
 <p>
         Public method to set or clear a breakpoint.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-filename the breakpoint belongs to (string)
+ID of the debugger backend
 </dd>
-<dt><i>line</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-linenumber of the breakpoint (int)
+filename the breakpoint belongs to
 </dd>
-<dt><i>setBreakpoint</i></dt>
+<dt><i>line</i> (int)</dt>
 <dd>
-flag indicating setting or resetting a
-            breakpoint (boolean)
+linenumber of the breakpoint
 </dd>
-<dt><i>cond</i></dt>
+<dt><i>setBreakpoint</i> (bool)</dt>
 <dd>
-condition of the breakpoint (string)
+flag indicating setting or resetting a breakpoint
 </dd>
-<dt><i>temp</i></dt>
+<dt><i>cond</i> (str)</dt>
 <dd>
-flag indicating a temporary breakpoint (boolean)
+condition of the breakpoint
+</dd>
+<dt><i>temp</i> (bool)</dt>
+<dd>
+flag indicating a temporary breakpoint
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteBreakpointEnable" ID="DebuggerInterfaceNone.remoteBreakpointEnable"></a>
 <h4>DebuggerInterfaceNone.remoteBreakpointEnable</h4>
-<b>remoteBreakpointEnable</b>(<i>fn, line, enable</i>)
+<b>remoteBreakpointEnable</b>(<i>debuggerId, fn, line, enable</i>)
 
 <p>
         Public method to enable or disable a breakpoint.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-filename the breakpoint belongs to (string)
+ID of the debugger backend
 </dd>
-<dt><i>line</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-linenumber of the breakpoint (int)
+filename the breakpoint belongs to
 </dd>
-<dt><i>enable</i></dt>
+<dt><i>line</i> (int)</dt>
+<dd>
+linenumber of the breakpoint
+</dd>
+<dt><i>enable</i> (bool)</dt>
 <dd>
 flag indicating enabling or disabling a breakpoint
-            (boolean)
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteBreakpointIgnore" ID="DebuggerInterfaceNone.remoteBreakpointIgnore"></a>
 <h4>DebuggerInterfaceNone.remoteBreakpointIgnore</h4>
-<b>remoteBreakpointIgnore</b>(<i>fn, line, count</i>)
+<b>remoteBreakpointIgnore</b>(<i>debuggerId, fn, line, count</i>)
 
 <p>
         Public method to ignore a breakpoint the next couple of occurrences.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-filename the breakpoint belongs to (string)
+ID of the debugger backend
 </dd>
-<dt><i>line</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-linenumber of the breakpoint (int)
+filename the breakpoint belongs to
 </dd>
-<dt><i>count</i></dt>
+<dt><i>line</i> (int)</dt>
 <dd>
-number of occurrences to ignore (int)
+linenumber of the breakpoint
+</dd>
+<dt><i>count</i> (int)</dt>
+<dd>
+number of occurrences to ignore
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteCapabilities" ID="DebuggerInterfaceNone.remoteCapabilities"></a>
 <h4>DebuggerInterfaceNone.remoteCapabilities</h4>
-<b>remoteCapabilities</b>(<i></i>)
+<b>remoteCapabilities</b>(<i>debuggerId</i>)
 
 <p>
         Public slot to get the debug clients capabilities.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
+<a NAME="DebuggerInterfaceNone.remoteClientDisassembly" ID="DebuggerInterfaceNone.remoteClientDisassembly"></a>
+<h4>DebuggerInterfaceNone.remoteClientDisassembly</h4>
+<b>remoteClientDisassembly</b>(<i>debuggerId</i>)
+
+<p>
+        Public method to ask the client for the latest traceback disassembly.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfaceNone.remoteClientSetFilter" ID="DebuggerInterfaceNone.remoteClientSetFilter"></a>
 <h4>DebuggerInterfaceNone.remoteClientSetFilter</h4>
-<b>remoteClientSetFilter</b>(<i>scope, filterStr</i>)
+<b>remoteClientSetFilter</b>(<i>debuggerId, scope, filterStr</i>)
 
 <p>
         Public method to set a variables filter list.
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterStr</i></dt>
+<dt><i>filterStr</i> (str)</dt>
 <dd>
 regexp string for variable names to filter out
-            (string)
+</dd>
+</dl>
+<a NAME="DebuggerInterfaceNone.remoteClientStack" ID="DebuggerInterfaceNone.remoteClientStack"></a>
+<h4>DebuggerInterfaceNone.remoteClientStack</h4>
+<b>remoteClientStack</b>(<i>debuggerId</i>)
+
+<p>
+        Public method to request the stack of the main thread.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteClientVariable" ID="DebuggerInterfaceNone.remoteClientVariable"></a>
 <h4>DebuggerInterfaceNone.remoteClientVariable</h4>
-<b>remoteClientVariable</b>(<i>scope, filterList, var, framenr=0, maxSize=0</i>)
+<b>remoteClientVariable</b>(<i>debuggerId, scope, filterList, var, framenr=0, maxSize=0</i>)
 
 <p>
         Public method to request the variables of the debugged program.
 </p>
 <dl>
 
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 <dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterList</i> (list of int)</dt>
+<dt><i>filterList</i> (list of str)</dt>
 <dd>
 list of variable types to filter out
 </dd>
@@ -450,7 +540,7 @@
 </dd>
 <dt><i>framenr</i> (int)</dt>
 <dd>
-framenumber of the variables to retrieve (int)
+framenumber of the variables to retrieve
 </dd>
 <dt><i>maxSize</i> (int)</dt>
 <dd>
@@ -461,18 +551,22 @@
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteClientVariables" ID="DebuggerInterfaceNone.remoteClientVariables"></a>
 <h4>DebuggerInterfaceNone.remoteClientVariables</h4>
-<b>remoteClientVariables</b>(<i>scope, filterList, framenr=0, maxSize=0</i>)
+<b>remoteClientVariables</b>(<i>debuggerId, scope, filterList, framenr=0, maxSize=0</i>)
 
 <p>
         Public method to request the variables of the debugged program.
 </p>
 <dl>
 
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 <dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterList</i> (list of int)</dt>
+<dt><i>filterList</i> (list of str)</dt>
 <dd>
 list of variable types to filter out
 </dd>
@@ -489,7 +583,7 @@
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteCompletion" ID="DebuggerInterfaceNone.remoteCompletion"></a>
 <h4>DebuggerInterfaceNone.remoteCompletion</h4>
-<b>remoteCompletion</b>(<i>text</i>)
+<b>remoteCompletion</b>(<i>debuggerId, text</i>)
 
 <p>
         Public slot to get the a list of possible commandline completions
@@ -497,21 +591,29 @@
 </p>
 <dl>
 
-<dt><i>text</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-the text to be completed (string)
+ID of the debugger backend
+</dd>
+<dt><i>text</i> (str)</dt>
+<dd>
+the text to be completed
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteContinue" ID="DebuggerInterfaceNone.remoteContinue"></a>
 <h4>DebuggerInterfaceNone.remoteContinue</h4>
-<b>remoteContinue</b>(<i>special=False</i>)
+<b>remoteContinue</b>(<i>debuggerId, special=False</i>)
 
 <p>
         Public method to continue the debugged program.
 </p>
 <dl>
 
-<dt><i>special</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>special</i> (bool)</dt>
 <dd>
 flag indicating a special continue operation
 </dd>
@@ -525,22 +627,22 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-the filename to run (string)
+the filename to run
 </dd>
-<dt><i>argv</i></dt>
+<dt><i>argv</i> (str)</dt>
 <dd>
-the commandline arguments to pass to the program (string)
+the commandline arguments to pass to the program
 </dd>
-<dt><i>wd</i></dt>
+<dt><i>wd</i> (str)</dt>
 <dd>
-the working directory for the program (string)
+the working directory for the program
 </dd>
-<dt><i>erase=</i></dt>
+<dt><i>erase</i> (bool)</dt>
 <dd>
 flag indicating that coverage info should be
-            cleared first (boolean)
+            cleared first
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteEnvironment" ID="DebuggerInterfaceNone.remoteEnvironment"></a>
@@ -552,81 +654,88 @@
 </p>
 <dl>
 
-<dt><i>env</i></dt>
+<dt><i>env</i> (dict)</dt>
 <dd>
-environment settings (dictionary)
-</dd>
-</dl>
-<a NAME="DebuggerInterfaceNone.remoteEval" ID="DebuggerInterfaceNone.remoteEval"></a>
-<h4>DebuggerInterfaceNone.remoteEval</h4>
-<b>remoteEval</b>(<i>arg</i>)
-
-<p>
-        Public method to evaluate arg in the current context of the debugged
-        program.
-</p>
-<dl>
-
-<dt><i>arg</i></dt>
-<dd>
-the arguments to evaluate (string)
+environment settings
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteLoad" ID="DebuggerInterfaceNone.remoteLoad"></a>
 <h4>DebuggerInterfaceNone.remoteLoad</h4>
-<b>remoteLoad</b>(<i>fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False</i>)
+<b>remoteLoad</b>(<i>fn, argv, wd, traceInterpreter=False, autoContinue=True, enableMultiprocess=False</i>)
 
 <p>
         Public method to load a new program to debug.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-the filename to debug (string)
+the filename to debug
 </dd>
-<dt><i>argv</i></dt>
+<dt><i>argv</i> (str)</dt>
 <dd>
-the commandline arguments to pass to the program (string)
+the commandline arguments to pass to the program
 </dd>
-<dt><i>wd</i></dt>
+<dt><i>wd</i> (str)</dt>
 <dd>
-the working directory for the program (string)
+the working directory for the program
 </dd>
-<dt><i>traceInterpreter=</i></dt>
+<dt><i>traceInterpreter</i> (bool)</dt>
 <dd>
 flag indicating if the interpreter library
-            should be traced as well (boolean)
+            should be traced as well
 </dd>
-<dt><i>autoContinue=</i></dt>
+<dt><i>autoContinue</i> (bool)</dt>
 <dd>
 flag indicating, that the debugger should not
-            stop at the first executable line (boolean)
+            stop at the first executable line
 </dd>
-<dt><i>autoFork=</i></dt>
+<dt><i>enableMultiprocess</i> (bool)</dt>
 <dd>
-flag indicating the automatic fork mode (boolean)
-</dd>
-<dt><i>forkChild=</i></dt>
-<dd>
-flag indicating to debug the child after forking
-            (boolean)
+flag indicating to perform multiprocess
+            debugging
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteMoveIP" ID="DebuggerInterfaceNone.remoteMoveIP"></a>
 <h4>DebuggerInterfaceNone.remoteMoveIP</h4>
-<b>remoteMoveIP</b>(<i>line</i>)
+<b>remoteMoveIP</b>(<i>debuggerId, line</i>)
 
 <p>
         Public method to move the instruction pointer to a different line.
 </p>
 <dl>
 
-<dt><i>line</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>line</i> (int)</dt>
 <dd>
 the new line, where execution should be continued
 </dd>
 </dl>
+<a NAME="DebuggerInterfaceNone.remoteNoDebugList" ID="DebuggerInterfaceNone.remoteNoDebugList"></a>
+<h4>DebuggerInterfaceNone.remoteNoDebugList</h4>
+<b>remoteNoDebugList</b>(<i>debuggerId, noDebugList</i>)
+
+<p>
+        Public method to set a list of programs not to be debugged.
+</p>
+<p>
+        The programs given in the list will not be run under the control
+        of the multi process debugger.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>noDebugList</i> (list of str)</dt>
+<dd>
+list of Python programs not to be debugged
+</dd>
+</dl>
 <a NAME="DebuggerInterfaceNone.remoteProfile" ID="DebuggerInterfaceNone.remoteProfile"></a>
 <h4>DebuggerInterfaceNone.remoteProfile</h4>
 <b>remoteProfile</b>(<i>fn, argv, wd, erase=False</i>)
@@ -636,133 +745,170 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-the filename to run (string)
+the filename to run
 </dd>
-<dt><i>argv</i></dt>
+<dt><i>argv</i> (str)</dt>
 <dd>
-the commandline arguments to pass to the program (string)
+the commandline arguments to pass to the program
 </dd>
-<dt><i>wd</i></dt>
+<dt><i>wd</i> (str)</dt>
 <dd>
-the working directory for the program (string)
+the working directory for the program
 </dd>
-<dt><i>erase=</i></dt>
+<dt><i>erase</i> (bool)</dt>
 <dd>
 flag indicating that timing info should be cleared
-            first (boolean)
+            first
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteRawInput" ID="DebuggerInterfaceNone.remoteRawInput"></a>
 <h4>DebuggerInterfaceNone.remoteRawInput</h4>
-<b>remoteRawInput</b>(<i>s</i>)
+<b>remoteRawInput</b>(<i>debuggerId, inputString</i>)
 
 <p>
         Public method to send the raw input to the debugged program.
 </p>
 <dl>
 
-<dt><i>s</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-the raw input (string)
+ID of the debugger backend
+</dd>
+<dt><i>inputString</i> (str)</dt>
+<dd>
+the raw input
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteRun" ID="DebuggerInterfaceNone.remoteRun"></a>
 <h4>DebuggerInterfaceNone.remoteRun</h4>
-<b>remoteRun</b>(<i>fn, argv, wd, autoFork=False, forkChild=False</i>)
+<b>remoteRun</b>(<i>fn, argv, wd</i>)
 
 <p>
         Public method to load a new program to run.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-the filename to run (string)
+the filename to run
 </dd>
-<dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd>
-<dt><i>wd</i></dt>
+<dt><i>argv</i> (str)</dt>
 <dd>
-the working directory for the program (string)
+the commandline arguments to pass to the program
 </dd>
-<dt><i>autoFork=</i></dt>
+<dt><i>wd</i> (str)</dt>
 <dd>
-flag indicating the automatic fork mode (boolean)
-</dd>
-<dt><i>forkChild=</i></dt>
-<dd>
-flag indicating to debug the child after forking
-            (boolean)
+the working directory for the program
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteSetThread" ID="DebuggerInterfaceNone.remoteSetThread"></a>
 <h4>DebuggerInterfaceNone.remoteSetThread</h4>
-<b>remoteSetThread</b>(<i>tid</i>)
+<b>remoteSetThread</b>(<i>debuggerId, tid</i>)
 
 <p>
         Public method to request to set the given thread as current thread.
 </p>
 <dl>
 
-<dt><i>tid</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-id of the thread (integer)
+ID of the debugger backend
+</dd>
+<dt><i>tid</i> (int)</dt>
+<dd>
+id of the thread
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteStatement" ID="DebuggerInterfaceNone.remoteStatement"></a>
 <h4>DebuggerInterfaceNone.remoteStatement</h4>
-<b>remoteStatement</b>(<i>stmt</i>)
+<b>remoteStatement</b>(<i>debuggerId, stmt</i>)
 
 <p>
         Public method to execute a Python statement.
 </p>
 <dl>
 
-<dt><i>stmt</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-the Python statement to execute (string). It
-              should not have a trailing newline.
+ID of the debugger backend
+</dd>
+<dt><i>stmt</i> (str)</dt>
+<dd>
+the Python statement to execute.
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteStep" ID="DebuggerInterfaceNone.remoteStep"></a>
 <h4>DebuggerInterfaceNone.remoteStep</h4>
-<b>remoteStep</b>(<i></i>)
+<b>remoteStep</b>(<i>debuggerId</i>)
 
 <p>
         Public method to single step the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfaceNone.remoteStepOut" ID="DebuggerInterfaceNone.remoteStepOut"></a>
 <h4>DebuggerInterfaceNone.remoteStepOut</h4>
-<b>remoteStepOut</b>(<i></i>)
+<b>remoteStepOut</b>(<i>debuggerId</i>)
 
 <p>
         Public method to step out the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfaceNone.remoteStepOver" ID="DebuggerInterfaceNone.remoteStepOver"></a>
 <h4>DebuggerInterfaceNone.remoteStepOver</h4>
-<b>remoteStepOver</b>(<i></i>)
+<b>remoteStepOver</b>(<i>debuggerId</i>)
 
 <p>
         Public method to step over the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfaceNone.remoteStepQuit" ID="DebuggerInterfaceNone.remoteStepQuit"></a>
 <h4>DebuggerInterfaceNone.remoteStepQuit</h4>
-<b>remoteStepQuit</b>(<i></i>)
+<b>remoteStepQuit</b>(<i>debuggerId</i>)
 
 <p>
         Public method to stop the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfaceNone.remoteThreadList" ID="DebuggerInterfaceNone.remoteThreadList"></a>
 <h4>DebuggerInterfaceNone.remoteThreadList</h4>
-<b>remoteThreadList</b>(<i></i>)
+<b>remoteThreadList</b>(<i>debuggerId</i>)
 
 <p>
         Public method to request the list of threads from the client.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfaceNone.remoteUTDiscover" ID="DebuggerInterfaceNone.remoteUTDiscover"></a>
 <h4>DebuggerInterfaceNone.remoteUTDiscover</h4>
 <b>remoteUTDiscover</b>(<i>syspath, workdir, discoveryStart</i>)
@@ -877,49 +1023,55 @@
 </p>
 <a NAME="DebuggerInterfaceNone.remoteWatchpoint" ID="DebuggerInterfaceNone.remoteWatchpoint"></a>
 <h4>DebuggerInterfaceNone.remoteWatchpoint</h4>
-<b>remoteWatchpoint</b>(<i>cond, setWatch, temp=False</i>)
+<b>remoteWatchpoint</b>(<i>debuggerId, cond, setWatch, temp=False</i>)
 
 <p>
         Public method to set or clear a watch expression.
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-expression of the watch expression (string)
+ID of the debugger backend
 </dd>
-<dt><i>setWatch</i></dt>
+<dt><i>cond</i> (str)</dt>
+<dd>
+expression of the watch expression
+</dd>
+<dt><i>setWatch</i> (bool)</dt>
 <dd>
 flag indicating setting or resetting a watch expression
-            (boolean)
 </dd>
-<dt><i>temp</i></dt>
+<dt><i>temp</i> (bool)</dt>
 <dd>
-flag indicating a temporary watch expression (boolean)
+flag indicating a temporary watch expression
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteWatchpointEnable" ID="DebuggerInterfaceNone.remoteWatchpointEnable"></a>
 <h4>DebuggerInterfaceNone.remoteWatchpointEnable</h4>
-<b>remoteWatchpointEnable</b>(<i>cond, enable</i>)
+<b>remoteWatchpointEnable</b>(<i>debuggerId, cond, enable</i>)
 
 <p>
         Public method to enable or disable a watch expression.
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-expression of the watch expression (string)
+ID of the debugger backend
 </dd>
-<dt><i>enable</i></dt>
+<dt><i>cond</i> (str)</dt>
 <dd>
-flag indicating enabling or disabling a watch
-            expression (boolean)
+expression of the watch expression
+</dd>
+<dt><i>enable</i> (bool)</dt>
+<dd>
+flag indicating enabling or disabling a watch expression
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.remoteWatchpointIgnore" ID="DebuggerInterfaceNone.remoteWatchpointIgnore"></a>
 <h4>DebuggerInterfaceNone.remoteWatchpointIgnore</h4>
-<b>remoteWatchpointIgnore</b>(<i>cond, count</i>)
+<b>remoteWatchpointIgnore</b>(<i>debuggerId, cond, count</i>)
 
 <p>
         Public method to ignore a watch expression the next couple of
@@ -927,27 +1079,35 @@
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-expression of the watch expression (string)
+ID of the debugger backend
 </dd>
-<dt><i>count</i></dt>
+<dt><i>cond</i> (str)</dt>
 <dd>
-number of occurrences to ignore (int)
+expression of the watch expression
+</dd>
+<dt><i>count</i> (int)</dt>
+<dd>
+number of occurrences to ignore
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.setCallTraceEnabled" ID="DebuggerInterfaceNone.setCallTraceEnabled"></a>
 <h4>DebuggerInterfaceNone.setCallTraceEnabled</h4>
-<b>setCallTraceEnabled</b>(<i>on</i>)
+<b>setCallTraceEnabled</b>(<i>debuggerId, on</i>)
 
 <p>
         Public method to set the call trace state.
 </p>
 <dl>
 
-<dt><i>on</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-flag indicating to enable the call trace function (boolean)
+ID of the debugger backend
+</dd>
+<dt><i>on</i> (bool)</dt>
+<dd>
+flag indicating to enable the call trace function
 </dd>
 </dl>
 <a NAME="DebuggerInterfaceNone.shutdown" ID="DebuggerInterfaceNone.shutdown"></a>
@@ -958,8 +1118,8 @@
         Public method to cleanly shut down.
 </p>
 <p>
-        It closes our socket and shuts down
-        the debug client. (Needed on Win OS)
+        It closes our socket and shuts down the debug client.
+        (Needed on Win OS)
 </p>
 <a NAME="DebuggerInterfaceNone.startRemote" ID="DebuggerInterfaceNone.startRemote"></a>
 <h4>DebuggerInterfaceNone.startRemote</h4>
--- a/eric6/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html	Thu Dec 17 14:40:06 2020 +0100
@@ -82,8 +82,12 @@
 <td>Constructor</td>
 </tr>
 <tr>
-<td><a href="#DebuggerInterfacePython.__askForkTo">__askForkTo</a></td>
-<td>Private method to ask the user which branch of a fork to follow.</td>
+<td><a href="#DebuggerInterfacePython.__assignDebuggerId">__assignDebuggerId</a></td>
+<td>Private method to set the debugger id for a recent debugger connection attempt.</td>
+</tr>
+<tr>
+<td><a href="#DebuggerInterfacePython.__flush">__flush</a></td>
+<td>Private slot to flush the queue.</td>
 </tr>
 <tr>
 <td><a href="#DebuggerInterfacePython.__handleJsonCommand">__handleJsonCommand</a></td>
@@ -106,6 +110,14 @@
 <td>Private method to send a single command to the client.</td>
 </tr>
 <tr>
+<td><a href="#DebuggerInterfacePython.__shutdownSocket">__shutdownSocket</a></td>
+<td>Private slot to shut down a socket.</td>
+</tr>
+<tr>
+<td><a href="#DebuggerInterfacePython.__socketDisconnected">__socketDisconnected</a></td>
+<td>Private slot handling a socket disconnecting.</td>
+</tr>
+<tr>
 <td><a href="#DebuggerInterfacePython.__startProcess">__startProcess</a></td>
 <td>Private method to start the debugger client process.</td>
 </tr>
@@ -114,12 +126,12 @@
 <td>Private method to write a JSON command to the socket.</td>
 </tr>
 <tr>
-<td><a href="#DebuggerInterfacePython.flush">flush</a></td>
-<td>Public slot to flush the queue.</td>
+<td><a href="#DebuggerInterfacePython.getClientCapabilities">getClientCapabilities</a></td>
+<td>Public method to retrieve the debug clients capabilities.</td>
 </tr>
 <tr>
-<td><a href="#DebuggerInterfacePython.getClientCapabilities">getClientCapabilities</a></td>
-<td>Public method to retrieve the debug clients capabilities.</td>
+<td><a href="#DebuggerInterfacePython.getDebuggerIds">getDebuggerIds</a></td>
+<td>Public method to return the IDs of the connected debugger backends.</td>
 </tr>
 <tr>
 <td><a href="#DebuggerInterfacePython.isConnected">isConnected</a></td>
@@ -158,6 +170,10 @@
 <td>Public method to set a variables filter list.</td>
 </tr>
 <tr>
+<td><a href="#DebuggerInterfacePython.remoteClientStack">remoteClientStack</a></td>
+<td>Public method to request the stack of the main thread.</td>
+</tr>
+<tr>
 <td><a href="#DebuggerInterfacePython.remoteClientVariable">remoteClientVariable</a></td>
 <td>Public method to request the variables of the debugged program.</td>
 </tr>
@@ -190,6 +206,10 @@
 <td>Public method to move the instruction pointer to a different line.</td>
 </tr>
 <tr>
+<td><a href="#DebuggerInterfacePython.remoteNoDebugList">remoteNoDebugList</a></td>
+<td>Public method to set a list of programs not to be debugged.</td>
+</tr>
+<tr>
 <td><a href="#DebuggerInterfacePython.remoteProfile">remoteProfile</a></td>
 <td>Public method to load a new program to collect profiling data.</td>
 </tr>
@@ -298,16 +318,35 @@
 flag indicating passive connection mode
 </dd>
 </dl>
-<a NAME="DebuggerInterfacePython.__askForkTo" ID="DebuggerInterfacePython.__askForkTo"></a>
-<h4>DebuggerInterfacePython.__askForkTo</h4>
-<b>__askForkTo</b>(<i></i>)
+<a NAME="DebuggerInterfacePython.__assignDebuggerId" ID="DebuggerInterfacePython.__assignDebuggerId"></a>
+<h4>DebuggerInterfacePython.__assignDebuggerId</h4>
+<b>__assignDebuggerId</b>(<i>sock, debuggerId</i>)
 
 <p>
-        Private method to ask the user which branch of a fork to follow.
+        Private method to set the debugger id for a recent debugger connection
+        attempt.
+</p>
+<dl>
+
+<dt><i>sock</i> (QTcpSocket)</dt>
+<dd>
+reference to the socket object
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+id of the connected debug client
+</dd>
+</dl>
+<a NAME="DebuggerInterfacePython.__flush" ID="DebuggerInterfacePython.__flush"></a>
+<h4>DebuggerInterfacePython.__flush</h4>
+<b>__flush</b>(<i></i>)
+
+<p>
+        Private slot to flush the queue.
 </p>
 <a NAME="DebuggerInterfacePython.__handleJsonCommand" ID="DebuggerInterfacePython.__handleJsonCommand"></a>
 <h4>DebuggerInterfacePython.__handleJsonCommand</h4>
-<b>__handleJsonCommand</b>(<i>jsonStr</i>)
+<b>__handleJsonCommand</b>(<i>jsonStr, sock</i>)
 
 <p>
         Private method to handle a command or response serialized as a
@@ -320,6 +359,10 @@
 string containing the command or response received
             from the debug backend
 </dd>
+<dt><i>sock</i> (QTcpSocket)</dt>
+<dd>
+reference to the socket the data was received from
+</dd>
 </dl>
 <a NAME="DebuggerInterfacePython.__identityTranslation" ID="DebuggerInterfacePython.__identityTranslation"></a>
 <h4>DebuggerInterfacePython.__identityTranslation</h4>
@@ -330,11 +373,11 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-filename to be translated (string)
+filename to be translated
 </dd>
-<dt><i>remote2local</i></dt>
+<dt><i>remote2local</i> (bool)</dt>
 <dd>
 flag indicating the direction of translation
             (False = local to remote, True = remote to local [default])
@@ -343,16 +386,29 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-translated filename (string)
+translated filename
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.__parseClientLine" ID="DebuggerInterfacePython.__parseClientLine"></a>
 <h4>DebuggerInterfacePython.__parseClientLine</h4>
-<b>__parseClientLine</b>(<i></i>)
+<b>__parseClientLine</b>(<i>sock</i>)
 
 <p>
         Private method to handle data from the client.
 </p>
+<dl>
+
+<dt><i>sock</i> (QTcpSocket)</dt>
+<dd>
+reference to the socket to read data from
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.__remoteTranslation" ID="DebuggerInterfacePython.__remoteTranslation"></a>
 <h4>DebuggerInterfacePython.__remoteTranslation</h4>
 <b>__remoteTranslation</b>(<i>fn, remote2local=True</i>)
@@ -362,11 +418,11 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-filename to be translated (string)
+filename to be translated
 </dd>
-<dt><i>remote2local</i></dt>
+<dt><i>remote2local</i> (bool)</dt>
 <dd>
 flag indicating the direction of translation
             (False = local to remote, True = remote to local [default])
@@ -375,12 +431,18 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-translated filename (string)
+translated filename
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.__sendJsonCommand" ID="DebuggerInterfacePython.__sendJsonCommand"></a>
 <h4>DebuggerInterfacePython.__sendJsonCommand</h4>
-<b>__sendJsonCommand</b>(<i>command, params</i>)
+<b>__sendJsonCommand</b>(<i>command, params, debuggerId="", sock=None</i>)
 
 <p>
         Private method to send a single command to the client.
@@ -395,6 +457,43 @@
 <dd>
 dictionary of named parameters for the command
 </dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+id of the debug client to send the command to
+</dd>
+<dt><i>sock</i> (QTcpSocket)</dt>
+<dd>
+reference to the socket object to be used (only used if
+            debuggerId is not given)
+</dd>
+</dl>
+<a NAME="DebuggerInterfacePython.__shutdownSocket" ID="DebuggerInterfacePython.__shutdownSocket"></a>
+<h4>DebuggerInterfacePython.__shutdownSocket</h4>
+<b>__shutdownSocket</b>(<i>sock</i>)
+
+<p>
+        Private slot to shut down a socket.
+</p>
+<dl>
+
+<dt><i>sock</i> (QTcpSocket)</dt>
+<dd>
+reference to the socket
+</dd>
+</dl>
+<a NAME="DebuggerInterfacePython.__socketDisconnected" ID="DebuggerInterfacePython.__socketDisconnected"></a>
+<h4>DebuggerInterfacePython.__socketDisconnected</h4>
+<b>__socketDisconnected</b>(<i>sock</i>)
+
+<p>
+        Private slot handling a socket disconnecting.
+</p>
+<dl>
+
+<dt><i>sock</i> (QTcpSocket)</dt>
+<dd>
+reference to the disconnected socket
+</dd>
 </dl>
 <a NAME="DebuggerInterfacePython.__startProcess" ID="DebuggerInterfacePython.__startProcess"></a>
 <h4>DebuggerInterfacePython.__startProcess</h4>
@@ -436,7 +535,7 @@
 </dl>
 <a NAME="DebuggerInterfacePython.__writeJsonCommandToSocket" ID="DebuggerInterfacePython.__writeJsonCommandToSocket"></a>
 <h4>DebuggerInterfacePython.__writeJsonCommandToSocket</h4>
-<b>__writeJsonCommandToSocket</b>(<i>cmd</i>)
+<b>__writeJsonCommandToSocket</b>(<i>cmd, sock</i>)
 
 <p>
         Private method to write a JSON command to the socket.
@@ -447,14 +546,11 @@
 <dd>
 JSON command to be sent
 </dd>
+<dt><i>sock</i> (QTcpSocket)</dt>
+<dd>
+reference to the socket to write to
+</dd>
 </dl>
-<a NAME="DebuggerInterfacePython.flush" ID="DebuggerInterfacePython.flush"></a>
-<h4>DebuggerInterfacePython.flush</h4>
-<b>flush</b>(<i></i>)
-
-<p>
-        Public slot to flush the queue.
-</p>
 <a NAME="DebuggerInterfacePython.getClientCapabilities" ID="DebuggerInterfacePython.getClientCapabilities"></a>
 <h4>DebuggerInterfacePython.getClientCapabilities</h4>
 <b>getClientCapabilities</b>(<i></i>)
@@ -465,7 +561,32 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-debug client capabilities (integer)
+debug client capabilities
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+int
+</dd>
+</dl>
+<a NAME="DebuggerInterfacePython.getDebuggerIds" ID="DebuggerInterfacePython.getDebuggerIds"></a>
+<h4>DebuggerInterfacePython.getDebuggerIds</h4>
+<b>getDebuggerIds</b>(<i></i>)
+
+<p>
+        Public method to return the IDs of the connected debugger backends.
+</p>
+<dl>
+<dt>Returns:</dt>
+<dd>
+list of connected debugger backend IDs
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.isConnected" ID="DebuggerInterfacePython.isConnected"></a>
@@ -478,7 +599,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating the connection status (boolean)
+flag indicating the connection status
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.newConnection" ID="DebuggerInterfacePython.newConnection"></a>
@@ -490,15 +617,21 @@
 </p>
 <dl>
 
-<dt><i>sock</i></dt>
+<dt><i>sock</i> (QTcpSocket)</dt>
 <dd>
-reference to the socket object (QTcpSocket)
+reference to the socket object
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating success (boolean)
+flag indicating success
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteBanner" ID="DebuggerInterfacePython.remoteBanner"></a>
@@ -510,127 +643,172 @@
 </p>
 <a NAME="DebuggerInterfacePython.remoteBreakpoint" ID="DebuggerInterfacePython.remoteBreakpoint"></a>
 <h4>DebuggerInterfacePython.remoteBreakpoint</h4>
-<b>remoteBreakpoint</b>(<i>fn, line, setBreakpoint, cond=None, temp=False</i>)
+<b>remoteBreakpoint</b>(<i>debuggerId, fn, line, setBreakpoint, cond=None, temp=False</i>)
 
 <p>
         Public method to set or clear a breakpoint.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-filename the breakpoint belongs to (string)
+ID of the debugger backend
 </dd>
-<dt><i>line</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-linenumber of the breakpoint (int)
+filename the breakpoint belongs to
 </dd>
-<dt><i>setBreakpoint</i></dt>
+<dt><i>line</i> (int)</dt>
 <dd>
-flag indicating setting or resetting a
-            breakpoint (boolean)
+linenumber of the breakpoint
 </dd>
-<dt><i>cond</i></dt>
+<dt><i>setBreakpoint</i> (bool)</dt>
 <dd>
-condition of the breakpoint (string)
+flag indicating setting or resetting a breakpoint
 </dd>
-<dt><i>temp</i></dt>
+<dt><i>cond</i> (str)</dt>
 <dd>
-flag indicating a temporary breakpoint (boolean)
+condition of the breakpoint
+</dd>
+<dt><i>temp</i> (bool)</dt>
+<dd>
+flag indicating a temporary breakpoint
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteBreakpointEnable" ID="DebuggerInterfacePython.remoteBreakpointEnable"></a>
 <h4>DebuggerInterfacePython.remoteBreakpointEnable</h4>
-<b>remoteBreakpointEnable</b>(<i>fn, line, enable</i>)
+<b>remoteBreakpointEnable</b>(<i>debuggerId, fn, line, enable</i>)
 
 <p>
         Public method to enable or disable a breakpoint.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-filename the breakpoint belongs to (string)
+ID of the debugger backend
 </dd>
-<dt><i>line</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-linenumber of the breakpoint (int)
+filename the breakpoint belongs to
 </dd>
-<dt><i>enable</i></dt>
+<dt><i>line</i> (int)</dt>
+<dd>
+linenumber of the breakpoint
+</dd>
+<dt><i>enable</i> (bool)</dt>
 <dd>
 flag indicating enabling or disabling a breakpoint
-            (boolean)
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteBreakpointIgnore" ID="DebuggerInterfacePython.remoteBreakpointIgnore"></a>
 <h4>DebuggerInterfacePython.remoteBreakpointIgnore</h4>
-<b>remoteBreakpointIgnore</b>(<i>fn, line, count</i>)
+<b>remoteBreakpointIgnore</b>(<i>debuggerId, fn, line, count</i>)
 
 <p>
         Public method to ignore a breakpoint the next couple of occurrences.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-filename the breakpoint belongs to (string)
+ID of the debugger backend
 </dd>
-<dt><i>line</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-linenumber of the breakpoint (int)
+filename the breakpoint belongs to
 </dd>
-<dt><i>count</i></dt>
+<dt><i>line</i> (int)</dt>
 <dd>
-number of occurrences to ignore (int)
+linenumber of the breakpoint
+</dd>
+<dt><i>count</i> (int)</dt>
+<dd>
+number of occurrences to ignore
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteCapabilities" ID="DebuggerInterfacePython.remoteCapabilities"></a>
 <h4>DebuggerInterfacePython.remoteCapabilities</h4>
-<b>remoteCapabilities</b>(<i></i>)
+<b>remoteCapabilities</b>(<i>debuggerId</i>)
 
 <p>
         Public slot to get the debug clients capabilities.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.remoteClientDisassembly" ID="DebuggerInterfacePython.remoteClientDisassembly"></a>
 <h4>DebuggerInterfacePython.remoteClientDisassembly</h4>
-<b>remoteClientDisassembly</b>(<i></i>)
+<b>remoteClientDisassembly</b>(<i>debuggerId</i>)
 
 <p>
         Public method to ask the client for the latest traceback disassembly.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.remoteClientSetFilter" ID="DebuggerInterfacePython.remoteClientSetFilter"></a>
 <h4>DebuggerInterfacePython.remoteClientSetFilter</h4>
-<b>remoteClientSetFilter</b>(<i>scope, filterStr</i>)
+<b>remoteClientSetFilter</b>(<i>debuggerId, scope, filterStr</i>)
 
 <p>
         Public method to set a variables filter list.
 </p>
 <dl>
 
-<dt><i>scope</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterStr</i></dt>
+<dt><i>filterStr</i> (str)</dt>
 <dd>
 regexp string for variable names to filter out
-            (string)
+</dd>
+</dl>
+<a NAME="DebuggerInterfacePython.remoteClientStack" ID="DebuggerInterfacePython.remoteClientStack"></a>
+<h4>DebuggerInterfacePython.remoteClientStack</h4>
+<b>remoteClientStack</b>(<i>debuggerId</i>)
+
+<p>
+        Public method to request the stack of the main thread.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteClientVariable" ID="DebuggerInterfacePython.remoteClientVariable"></a>
 <h4>DebuggerInterfacePython.remoteClientVariable</h4>
-<b>remoteClientVariable</b>(<i>scope, filterList, var, framenr=0, maxSize=0</i>)
+<b>remoteClientVariable</b>(<i>debuggerId, scope, filterList, var, framenr=0, maxSize=0</i>)
 
 <p>
         Public method to request the variables of the debugged program.
 </p>
 <dl>
 
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 <dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterList</i> (list of int)</dt>
+<dt><i>filterList</i> (list of str)</dt>
 <dd>
 list of variable types to filter out
 </dd>
@@ -651,18 +829,22 @@
 </dl>
 <a NAME="DebuggerInterfacePython.remoteClientVariables" ID="DebuggerInterfacePython.remoteClientVariables"></a>
 <h4>DebuggerInterfacePython.remoteClientVariables</h4>
-<b>remoteClientVariables</b>(<i>scope, filterList, framenr=0, maxSize=0</i>)
+<b>remoteClientVariables</b>(<i>debuggerId, scope, filterList, framenr=0, maxSize=0</i>)
 
 <p>
         Public method to request the variables of the debugged program.
 </p>
 <dl>
 
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
 <dt><i>scope</i> (int)</dt>
 <dd>
 the scope of the variables (0 = local, 1 = global)
 </dd>
-<dt><i>filterList</i> (list of int)</dt>
+<dt><i>filterList</i> (list of str)</dt>
 <dd>
 list of variable types to filter out
 </dd>
@@ -679,7 +861,7 @@
 </dl>
 <a NAME="DebuggerInterfacePython.remoteCompletion" ID="DebuggerInterfacePython.remoteCompletion"></a>
 <h4>DebuggerInterfacePython.remoteCompletion</h4>
-<b>remoteCompletion</b>(<i>text</i>)
+<b>remoteCompletion</b>(<i>debuggerId, text</i>)
 
 <p>
         Public slot to get the a list of possible commandline completions
@@ -687,21 +869,29 @@
 </p>
 <dl>
 
-<dt><i>text</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-the text to be completed (string)
+ID of the debugger backend
+</dd>
+<dt><i>text</i> (str)</dt>
+<dd>
+the text to be completed
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteContinue" ID="DebuggerInterfacePython.remoteContinue"></a>
 <h4>DebuggerInterfacePython.remoteContinue</h4>
-<b>remoteContinue</b>(<i>special=False</i>)
+<b>remoteContinue</b>(<i>debuggerId, special=False</i>)
 
 <p>
         Public method to continue the debugged program.
 </p>
 <dl>
 
-<dt><i>special</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>special</i> (bool)</dt>
 <dd>
 flag indicating a special continue operation
 </dd>
@@ -715,22 +905,22 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-the filename to run (string)
+the filename to run
 </dd>
-<dt><i>argv</i></dt>
+<dt><i>argv</i> (str)</dt>
 <dd>
-the commandline arguments to pass to the program (string)
+the commandline arguments to pass to the program
 </dd>
-<dt><i>wd</i></dt>
+<dt><i>wd</i> (str)</dt>
 <dd>
-the working directory for the program (string)
+the working directory for the program
 </dd>
-<dt><i>erase=</i></dt>
+<dt><i>erase</i> (bool)</dt>
 <dd>
 flag indicating that coverage info should be
-            cleared first (boolean)
+            cleared first
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteEnvironment" ID="DebuggerInterfacePython.remoteEnvironment"></a>
@@ -742,66 +932,88 @@
 </p>
 <dl>
 
-<dt><i>env</i></dt>
+<dt><i>env</i> (dict)</dt>
 <dd>
-environment settings (dictionary)
+environment settings
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteLoad" ID="DebuggerInterfacePython.remoteLoad"></a>
 <h4>DebuggerInterfacePython.remoteLoad</h4>
-<b>remoteLoad</b>(<i>fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False</i>)
+<b>remoteLoad</b>(<i>fn, argv, wd, traceInterpreter=False, autoContinue=True, enableMultiprocess=False</i>)
 
 <p>
         Public method to load a new program to debug.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-the filename to debug (string)
+the filename to debug
 </dd>
-<dt><i>argv</i></dt>
+<dt><i>argv</i> (str)</dt>
 <dd>
-the commandline arguments to pass to the program (string)
+the commandline arguments to pass to the program
 </dd>
-<dt><i>wd</i></dt>
+<dt><i>wd</i> (str)</dt>
 <dd>
-the working directory for the program (string)
+the working directory for the program
 </dd>
-<dt><i>traceInterpreter=</i></dt>
+<dt><i>traceInterpreter</i> (bool)</dt>
 <dd>
 flag indicating if the interpreter library
-            should be traced as well (boolean)
+            should be traced as well
 </dd>
-<dt><i>autoContinue=</i></dt>
+<dt><i>autoContinue</i> (bool)</dt>
 <dd>
 flag indicating, that the debugger should not
-            stop at the first executable line (boolean)
+            stop at the first executable line
 </dd>
-<dt><i>autoFork=</i></dt>
+<dt><i>enableMultiprocess</i> (bool)</dt>
 <dd>
-flag indicating the automatic fork mode (boolean)
-</dd>
-<dt><i>forkChild=</i></dt>
-<dd>
-flag indicating to debug the child after forking
-            (boolean)
+flag indicating to perform multiprocess
+            debugging
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteMoveIP" ID="DebuggerInterfacePython.remoteMoveIP"></a>
 <h4>DebuggerInterfacePython.remoteMoveIP</h4>
-<b>remoteMoveIP</b>(<i>line</i>)
+<b>remoteMoveIP</b>(<i>debuggerId, line</i>)
 
 <p>
         Public method to move the instruction pointer to a different line.
 </p>
 <dl>
 
-<dt><i>line</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>line</i> (int)</dt>
 <dd>
 the new line, where execution should be continued
 </dd>
 </dl>
+<a NAME="DebuggerInterfacePython.remoteNoDebugList" ID="DebuggerInterfacePython.remoteNoDebugList"></a>
+<h4>DebuggerInterfacePython.remoteNoDebugList</h4>
+<b>remoteNoDebugList</b>(<i>debuggerId, noDebugList</i>)
+
+<p>
+        Public method to set a list of programs not to be debugged.
+</p>
+<p>
+        The programs given in the list will not be run under the control
+        of the multi process debugger.
+</p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+<dt><i>noDebugList</i> (list of str)</dt>
+<dd>
+list of Python programs not to be debugged
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.remoteProfile" ID="DebuggerInterfacePython.remoteProfile"></a>
 <h4>DebuggerInterfacePython.remoteProfile</h4>
 <b>remoteProfile</b>(<i>fn, argv, wd, erase=False</i>)
@@ -811,133 +1023,170 @@
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-the filename to run (string)
+the filename to run
 </dd>
-<dt><i>argv</i></dt>
+<dt><i>argv</i> (str)</dt>
 <dd>
-the commandline arguments to pass to the program (string)
+the commandline arguments to pass to the program
 </dd>
-<dt><i>wd</i></dt>
+<dt><i>wd</i> (str)</dt>
 <dd>
-the working directory for the program (string)
+the working directory for the program
 </dd>
-<dt><i>erase=</i></dt>
+<dt><i>erase</i> (bool)</dt>
 <dd>
 flag indicating that timing info should be cleared
-            first (boolean)
+            first
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteRawInput" ID="DebuggerInterfacePython.remoteRawInput"></a>
 <h4>DebuggerInterfacePython.remoteRawInput</h4>
-<b>remoteRawInput</b>(<i>s</i>)
+<b>remoteRawInput</b>(<i>debuggerId, inputString</i>)
 
 <p>
         Public method to send the raw input to the debugged program.
 </p>
 <dl>
 
-<dt><i>s</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-the raw input (string)
+ID of the debugger backend
+</dd>
+<dt><i>inputString</i> (str)</dt>
+<dd>
+the raw input
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteRun" ID="DebuggerInterfacePython.remoteRun"></a>
 <h4>DebuggerInterfacePython.remoteRun</h4>
-<b>remoteRun</b>(<i>fn, argv, wd, autoFork=False, forkChild=False</i>)
+<b>remoteRun</b>(<i>fn, argv, wd</i>)
 
 <p>
         Public method to load a new program to run.
 </p>
 <dl>
 
-<dt><i>fn</i></dt>
+<dt><i>fn</i> (str)</dt>
 <dd>
-the filename to run (string)
+the filename to run
 </dd>
-<dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd>
-<dt><i>wd</i></dt>
+<dt><i>argv</i> (str)</dt>
 <dd>
-the working directory for the program (string)
+the commandline arguments to pass to the program
 </dd>
-<dt><i>autoFork=</i></dt>
+<dt><i>wd</i> (str)</dt>
 <dd>
-flag indicating the automatic fork mode (boolean)
-</dd>
-<dt><i>forkChild=</i></dt>
-<dd>
-flag indicating to debug the child after forking
-            (boolean)
+the working directory for the program
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteSetThread" ID="DebuggerInterfacePython.remoteSetThread"></a>
 <h4>DebuggerInterfacePython.remoteSetThread</h4>
-<b>remoteSetThread</b>(<i>tid</i>)
+<b>remoteSetThread</b>(<i>debuggerId, tid</i>)
 
 <p>
         Public method to request to set the given thread as current thread.
 </p>
 <dl>
 
-<dt><i>tid</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-id of the thread (integer)
+ID of the debugger backend
+</dd>
+<dt><i>tid</i> (int)</dt>
+<dd>
+id of the thread
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteStatement" ID="DebuggerInterfacePython.remoteStatement"></a>
 <h4>DebuggerInterfacePython.remoteStatement</h4>
-<b>remoteStatement</b>(<i>stmt</i>)
+<b>remoteStatement</b>(<i>debuggerId, stmt</i>)
 
 <p>
         Public method to execute a Python statement.
 </p>
 <dl>
 
-<dt><i>stmt</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-the Python statement to execute (string). It
-              should not have a trailing newline.
+ID of the debugger backend
+</dd>
+<dt><i>stmt</i> (str)</dt>
+<dd>
+the Python statement to execute.
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteStep" ID="DebuggerInterfacePython.remoteStep"></a>
 <h4>DebuggerInterfacePython.remoteStep</h4>
-<b>remoteStep</b>(<i></i>)
+<b>remoteStep</b>(<i>debuggerId</i>)
 
 <p>
         Public method to single step the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.remoteStepOut" ID="DebuggerInterfacePython.remoteStepOut"></a>
 <h4>DebuggerInterfacePython.remoteStepOut</h4>
-<b>remoteStepOut</b>(<i></i>)
+<b>remoteStepOut</b>(<i>debuggerId</i>)
 
 <p>
         Public method to step out the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.remoteStepOver" ID="DebuggerInterfacePython.remoteStepOver"></a>
 <h4>DebuggerInterfacePython.remoteStepOver</h4>
-<b>remoteStepOver</b>(<i></i>)
+<b>remoteStepOver</b>(<i>debuggerId</i>)
 
 <p>
         Public method to step over the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.remoteStepQuit" ID="DebuggerInterfacePython.remoteStepQuit"></a>
 <h4>DebuggerInterfacePython.remoteStepQuit</h4>
-<b>remoteStepQuit</b>(<i></i>)
+<b>remoteStepQuit</b>(<i>debuggerId</i>)
 
 <p>
         Public method to stop the debugged program.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.remoteThreadList" ID="DebuggerInterfacePython.remoteThreadList"></a>
 <h4>DebuggerInterfacePython.remoteThreadList</h4>
-<b>remoteThreadList</b>(<i></i>)
+<b>remoteThreadList</b>(<i>debuggerId</i>)
 
 <p>
         Public method to request the list of threads from the client.
 </p>
+<dl>
+
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
+</dd>
+</dl>
 <a NAME="DebuggerInterfacePython.remoteUTDiscover" ID="DebuggerInterfacePython.remoteUTDiscover"></a>
 <h4>DebuggerInterfacePython.remoteUTDiscover</h4>
 <b>remoteUTDiscover</b>(<i>syspath, workdir, discoveryStart</i>)
@@ -1052,49 +1301,55 @@
 </p>
 <a NAME="DebuggerInterfacePython.remoteWatchpoint" ID="DebuggerInterfacePython.remoteWatchpoint"></a>
 <h4>DebuggerInterfacePython.remoteWatchpoint</h4>
-<b>remoteWatchpoint</b>(<i>cond, setWatch, temp=False</i>)
+<b>remoteWatchpoint</b>(<i>debuggerId, cond, setWatch, temp=False</i>)
 
 <p>
         Public method to set or clear a watch expression.
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-expression of the watch expression (string)
+ID of the debugger backend
 </dd>
-<dt><i>setWatch</i></dt>
+<dt><i>cond</i> (str)</dt>
+<dd>
+expression of the watch expression
+</dd>
+<dt><i>setWatch</i> (bool)</dt>
 <dd>
 flag indicating setting or resetting a watch expression
-            (boolean)
 </dd>
-<dt><i>temp</i></dt>
+<dt><i>temp</i> (bool)</dt>
 <dd>
-flag indicating a temporary watch expression (boolean)
+flag indicating a temporary watch expression
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteWatchpointEnable" ID="DebuggerInterfacePython.remoteWatchpointEnable"></a>
 <h4>DebuggerInterfacePython.remoteWatchpointEnable</h4>
-<b>remoteWatchpointEnable</b>(<i>cond, enable</i>)
+<b>remoteWatchpointEnable</b>(<i>debuggerId, cond, enable</i>)
 
 <p>
         Public method to enable or disable a watch expression.
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-expression of the watch expression (string)
+ID of the debugger backend
 </dd>
-<dt><i>enable</i></dt>
+<dt><i>cond</i> (str)</dt>
+<dd>
+expression of the watch expression
+</dd>
+<dt><i>enable</i> (bool)</dt>
 <dd>
 flag indicating enabling or disabling a watch expression
-            (boolean)
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.remoteWatchpointIgnore" ID="DebuggerInterfacePython.remoteWatchpointIgnore"></a>
 <h4>DebuggerInterfacePython.remoteWatchpointIgnore</h4>
-<b>remoteWatchpointIgnore</b>(<i>cond, count</i>)
+<b>remoteWatchpointIgnore</b>(<i>debuggerId, cond, count</i>)
 
 <p>
         Public method to ignore a watch expression the next couple of
@@ -1102,27 +1357,35 @@
 </p>
 <dl>
 
-<dt><i>cond</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-expression of the watch expression (string)
+ID of the debugger backend
 </dd>
-<dt><i>count</i></dt>
+<dt><i>cond</i> (str)</dt>
 <dd>
-number of occurrences to ignore (int)
+expression of the watch expression
+</dd>
+<dt><i>count</i> (int)</dt>
+<dd>
+number of occurrences to ignore
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.setCallTraceEnabled" ID="DebuggerInterfacePython.setCallTraceEnabled"></a>
 <h4>DebuggerInterfacePython.setCallTraceEnabled</h4>
-<b>setCallTraceEnabled</b>(<i>on</i>)
+<b>setCallTraceEnabled</b>(<i>debuggerId, on</i>)
 
 <p>
         Public method to set the call trace state.
 </p>
 <dl>
 
-<dt><i>on</i></dt>
+<dt><i>debuggerId</i> (str)</dt>
 <dd>
-flag indicating to enable the call trace function (boolean)
+ID of the debugger backend
+</dd>
+<dt><i>on</i> (bool)</dt>
+<dd>
+flag indicating to enable the call trace function
 </dd>
 </dl>
 <a NAME="DebuggerInterfacePython.shutdown" ID="DebuggerInterfacePython.shutdown"></a>
@@ -1133,8 +1396,8 @@
         Public method to cleanly shut down.
 </p>
 <p>
-        It closes our socket and shuts down
-        the debug client. (Needed on Win OS)
+        It closes our sockets and shuts down the debug clients.
+        (Needed on Win OS)
 </p>
 <a NAME="DebuggerInterfacePython.startRemote" ID="DebuggerInterfacePython.startRemote"></a>
 <h4>DebuggerInterfacePython.startRemote</h4>
--- a/eric6/Documentation/Source/eric6.Debugger.ExceptionLogger.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.ExceptionLogger.html	Thu Dec 17 14:40:06 2020 +0100
@@ -173,24 +173,28 @@
 </dl>
 <a NAME="ExceptionLogger.addException" ID="ExceptionLogger.addException"></a>
 <h4>ExceptionLogger.addException</h4>
-<b>addException</b>(<i>exceptionType, exceptionMessage, stackTrace</i>)
+<b>addException</b>(<i>exceptionType, exceptionMessage, stackTrace, debuggerId</i>)
 
 <p>
         Public slot to handle the arrival of a new exception.
 </p>
 <dl>
 
-<dt><i>exceptionType</i></dt>
+<dt><i>exceptionType</i> (str)</dt>
 <dd>
-type of exception raised (string)
+type of exception raised
 </dd>
-<dt><i>exceptionMessage</i></dt>
+<dt><i>exceptionMessage</i> (str)</dt>
 <dd>
-message given by the exception (string)
+message given by the exception
 </dd>
-<dt><i>stackTrace</i></dt>
+<dt><i>stackTrace</i> (list)</dt>
 <dd>
-list of stack entries.
+list of stack entries
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="ExceptionLogger.debuggingStarted" ID="ExceptionLogger.debuggingStarted"></a>
--- a/eric6/Documentation/Source/eric6.Debugger.StartDialog.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.StartDialog.html	Thu Dec 17 14:40:06 2020 +0100
@@ -111,10 +111,6 @@
 <td>Public method to retrieve the profiling related data entered into this dialog.</td>
 </tr>
 <tr>
-<td><a href="#StartDialog.getRunData">getRunData</a></td>
-<td>Public method to retrieve the debug related data entered into this dialog.</td>
-</tr>
-<tr>
 <td><a href="#StartDialog.historiesModified">historiesModified</a></td>
 <td>Public method to test for modified histories.</td>
 </tr>
@@ -135,7 +131,7 @@
 
 <a NAME="StartDialog.__init__" ID="StartDialog.__init__"></a>
 <h4>StartDialog (Constructor)</h4>
-<b>StartDialog</b>(<i>caption, lastUsedVenvName, argvList, wdList, envList, exceptions, parent=None, dialogType=0, modfuncList=None, tracePython=False, autoClearShell=True, autoContinue=True, autoFork=False, forkChild=False</i>)
+<b>StartDialog</b>(<i>caption, lastUsedVenvName, argvList, wdList, envList, exceptions, parent=None, dialogType=0, modfuncList=None, tracePython=False, autoClearShell=True, autoContinue=True, enableMultiprocess=False, multiprocessNoDebugHistory=None</i>)
 
 <p>
         Constructor
@@ -181,32 +177,34 @@
                 <li>3 = start profile dialog</li>
                 </ul>
 </dd>
-<dt><i>modfuncList=</i> (list of str)</dt>
+<dt><i>modfuncList</i> (list of str)</dt>
 <dd>
 history list of module functions
 </dd>
-<dt><i>tracePython=</i> (bool)</dt>
+<dt><i>tracePython</i> (bool)</dt>
 <dd>
 flag indicating if the Python library should
             be traced as well
 </dd>
-<dt><i>autoClearShell=</i> (bool)</dt>
+<dt><i>autoClearShell</i> (bool)</dt>
 <dd>
 flag indicating, that the interpreter window
             should be cleared automatically
 </dd>
-<dt><i>autoContinue=</i> (bool)</dt>
+<dt><i>autoContinue</i> (bool)</dt>
 <dd>
 flag indicating, that the debugger should not
             stop at the first executable line
 </dd>
-<dt><i>autoFork=</i> (bool)</dt>
+<dt><i>enableMultiprocess</i> (bool)</dt>
 <dd>
-flag indicating the automatic fork mode
+flag indicating the support for multi process
+            debugging
 </dd>
-<dt><i>forkChild=</i> (bool)</dt>
+<dt><i>multiprocessNoDebugHistory</i> (list of str)</dt>
 <dd>
-flag indicating to debug the child after forking
+list of lists with programs not to be
+            debugged
 </dd>
 </dl>
 <a NAME="StartDialog.__clearHistories" ID="StartDialog.__clearHistories"></a>
@@ -254,7 +252,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating erasure of coverage info (boolean)
+flag indicating erasure of coverage info
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="StartDialog.getData" ID="StartDialog.getData"></a>
@@ -267,9 +271,14 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-a tuple of interpreter (string), argv (string), workdir
-            (string), environment (string), exceptions flag (boolean),
-            clear interpreter flag (boolean) and run in console flag (boolean)
+a tuple of interpreter, argv, workdir, environment,
+            exceptions flag, clear interpreter flag and run in console flag
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, str, str, str, bool, bool, bool)
 </dd>
 </dl>
 <a NAME="StartDialog.getDebugData" ID="StartDialog.getDebugData"></a>
@@ -285,10 +294,15 @@
 <dd>
 a tuple of a flag indicating, if the Python library should be
             traced as well, a flag indicating, that the debugger should not
-            stop at the first executable line (boolean), a flag indicating,
-            that the debugger should fork automatically (boolean) and a flag
-            indicating, that the debugger should debug the child process after
-            forking automatically (boolean)
+            stop at the first executable line, a flag indicating to support
+            multi process debugging and a space separated list of programs not
+            to be debugged
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (bool, bool, bool, str)
 </dd>
 </dl>
 <a NAME="StartDialog.getHistories" ID="StartDialog.getHistories"></a>
@@ -302,7 +316,8 @@
 <dt>Returns:</dt>
 <dd>
 tuple containing the histories of command line arguments,
-            working directories, environment settings and interpreters
+            working directories, environment settings and no debug programs
+            lists
 </dd>
 </dl>
 <dl>
@@ -322,24 +337,13 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating erasure of profiling info (boolean)
+flag indicating erasure of profiling info
 </dd>
 </dl>
-<a NAME="StartDialog.getRunData" ID="StartDialog.getRunData"></a>
-<h4>StartDialog.getRunData</h4>
-<b>getRunData</b>(<i></i>)
-
-<p>
-        Public method to retrieve the debug related data entered into this
-        dialog.
-</p>
 <dl>
-<dt>Returns:</dt>
+<dt>Return Type:</dt>
 <dd>
-a tuple of a flag indicating, that the debugger should fork
-            automatically (boolean) and a flag indicating, that the debugger
-            should debug the child process after forking automatically
-            (boolean)
+bool
 </dd>
 </dl>
 <a NAME="StartDialog.historiesModified" ID="StartDialog.historiesModified"></a>
@@ -370,9 +374,9 @@
 </p>
 <dl>
 
-<dt><i>button</i></dt>
+<dt><i>button</i> (QAbstractButton)</dt>
 <dd>
-button that was clicked (QAbstractButton)
+button that was clicked
 </dd>
 </dl>
 <a NAME="StartDialog.on_modFuncCombo_editTextChanged" ID="StartDialog.on_modFuncCombo_editTextChanged"></a>
--- a/eric6/Documentation/Source/eric6.Debugger.VariablesFilterDialog.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Debugger.VariablesFilterDialog.html	Thu Dec 17 14:40:06 2020 +0100
@@ -127,8 +127,15 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-A tuple of lists of integer values. The first list is the
-            locals variables filter, the second the globals variables filter.
+tuple of lists containing the variable filters. The first list
+            is the locals variables filter, the second the globals variables
+            filter.
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (list of str, list of str)
 </dd>
 </dl>
 <a NAME="VariablesFilterDialog.on_buttonBox_clicked" ID="VariablesFilterDialog.on_buttonBox_clicked"></a>
@@ -154,13 +161,13 @@
 </p>
 <dl>
 
-<dt><i>lList</i></dt>
+<dt><i>lList</i> (list of str)</dt>
 <dd>
-local variables filter (list of int)
+local variables filter
 </dd>
-<dt><i>gList</i></dt>
+<dt><i>gList</i> (list of str)</dt>
 <dd>
-global variables filter (list of int)
+global variables filter
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html	Thu Dec 17 14:40:06 2020 +0100
@@ -150,7 +150,7 @@
 </tr>
 <tr>
 <td><a href="#SecurityContext.stringVal">stringVal</a></td>
-<td>Public method to get the value of a standalone unicode or string object.</td>
+<td>Public method to get the value of a standalone string object.</td>
 </tr>
 <tr>
 <td><a href="#SecurityContext.stringValAsEscapedBytes">stringValAsEscapedBytes</a></td>
@@ -623,13 +623,12 @@
 <b>stringVal</b>(<i></i>)
 
 <p>
-        Public method to get the value of a standalone unicode or string
-        object.
+        Public method to get the value of a standalone string object.
 </p>
 <dl>
 <dt>Returns:</dt>
 <dd>
-value of a standalone unicode or string object
+value of a standalone string object
 </dd>
 </dl>
 <dl>
--- a/eric6/Documentation/Source/eric6.QScintilla.Editor.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.QScintilla.Editor.html	Thu Dec 17 14:40:06 2020 +0100
@@ -4104,9 +4104,9 @@
 </p>
 <dl>
 
-<dt><i>evt</i></dt>
-<dd>
-the event, that was generated (QEvent)
+<dt><i>evt</i> (QEvent)</dt>
+<dd>
+the event, that was generated
 </dd>
 </dl>
 <a NAME="Editor.checkDirty" ID="Editor.checkDirty"></a>
@@ -4495,15 +4495,21 @@
 </p>
 <dl>
 
-<dt><i>evt</i></dt>
-<dd>
-reference to the event (QEvent)
+<dt><i>evt</i> (QEvent)</dt>
+<dd>
+reference to the event
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indicating, if the event was handled (boolean)
+flag indicating, if the event was handled
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="Editor.expandFoldWithChildren" ID="Editor.expandFoldWithChildren"></a>
@@ -4570,9 +4576,9 @@
 </p>
 <dl>
 
-<dt><i>event</i></dt>
-<dd>
-the event object (QFocusEvent)
+<dt><i>event</i> (QFocusEvent)</dt>
+<dd>
+the event object
 </dd>
 </dl>
 <a NAME="Editor.focusOutEvent" ID="Editor.focusOutEvent"></a>
@@ -4584,9 +4590,9 @@
 </p>
 <dl>
 
-<dt><i>event</i></dt>
-<dd>
-the event object (QFocusEvent)
+<dt><i>event</i> (QFocusEvent)</dt>
+<dd>
+the event object
 </dd>
 </dl>
 <a NAME="Editor.gestureEvent" ID="Editor.gestureEvent"></a>
@@ -4598,9 +4604,9 @@
 </p>
 <dl>
 
-<dt><i>evt</i></dt>
-<dd>
-reference to the gesture event (QGestureEvent
+<dt><i>evt</i> (QGestureEvent)</dt>
+<dd>
+reference to the gesture event
 </dd>
 </dl>
 <a NAME="Editor.getApiLanguage" ID="Editor.getApiLanguage"></a>
@@ -5666,9 +5672,9 @@
 </p>
 <dl>
 
-<dt><i>ev</i></dt>
-<dd>
-key event (QKeyEvent)
+<dt><i>ev</i> (QKeyEvent)</dt>
+<dd>
+key event
 </dd>
 </dl>
 <a NAME="Editor.macroDelete" ID="Editor.macroDelete"></a>
@@ -5778,9 +5784,9 @@
 </p>
 <dl>
 
-<dt><i>event</i></dt>
-<dd>
-the mouse press event (QMouseEvent)
+<dt><i>event</i> (QMouseEvent)</dt>
+<dd>
+the mouse press event
 </dd>
 </dl>
 <a NAME="Editor.mouseReleaseEvent" ID="Editor.mouseReleaseEvent"></a>
@@ -6072,9 +6078,9 @@
 </p>
 <dl>
 
-<dt><i>evt</i></dt>
-<dd>
-reference to the resize event (QResizeEvent)
+<dt><i>evt</i> (QResizeEvent)</dt>
+<dd>
+reference to the resize event
 </dd>
 </dl>
 <a NAME="Editor.revertToUnmodified" ID="Editor.revertToUnmodified"></a>
@@ -6610,15 +6616,21 @@
 </p>
 <dl>
 
-<dt><i>evt</i></dt>
-<dd>
-reference to the event (QEvent)
+<dt><i>evt</i> (QEvent)</dt>
+<dd>
+reference to the event
 </dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-flag indiating that the event was handled (boolean)
+flag indiating that the event was handled
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
 </dd>
 </dl>
 <a NAME="Editor.wheelEvent" ID="Editor.wheelEvent"></a>
@@ -6630,9 +6642,9 @@
 </p>
 <dl>
 
-<dt><i>evt</i></dt>
-<dd>
-reference to the wheel event (QWheelEvent)
+<dt><i>evt</i> (QWheelEvent)</dt>
+<dd>
+reference to the wheel event
 </dd>
 </dl>
 <a NAME="Editor.writeFile" ID="Editor.writeFile"></a>
--- a/eric6/Documentation/Source/eric6.QScintilla.MiniEditor.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.QScintilla.MiniEditor.html	Thu Dec 17 14:40:06 2020 +0100
@@ -1617,6 +1617,10 @@
 <td>Public method to return the name of the file being displayed.</td>
 </tr>
 <tr>
+<td><a href="#MiniScintilla.keyPressEvent">keyPressEvent</a></td>
+<td>Protected method to handle the user input a key at a time.</td>
+</tr>
+<tr>
 <td><a href="#MiniScintilla.removeTrailingWhitespace">removeTrailingWhitespace</a></td>
 <td>Public method to remove trailing whitespace.</td>
 </tr>
@@ -1636,9 +1640,9 @@
 </p>
 <dl>
 
-<dt><i>parent</i></dt>
+<dt><i>parent</i> (QWidget)</dt>
 <dd>
-parent widget (QWidget)
+parent widget
 </dd>
 </dl>
 <a NAME="MiniScintilla.focusInEvent" ID="MiniScintilla.focusInEvent"></a>
@@ -1656,9 +1660,9 @@
 </p>
 <dl>
 
-<dt><i>event</i></dt>
+<dt><i>event</i> (QFocusEvent)</dt>
 <dd>
-the event object (QFocusEvent)
+the event object
 </dd>
 </dl>
 <a NAME="MiniScintilla.focusOutEvent" ID="MiniScintilla.focusOutEvent"></a>
@@ -1670,9 +1674,9 @@
 </p>
 <dl>
 
-<dt><i>event</i></dt>
+<dt><i>event</i> (QFocusEvent)</dt>
 <dd>
-the event object (QFocusEvent)
+the event object
 </dd>
 </dl>
 <a NAME="MiniScintilla.getFileName" ID="MiniScintilla.getFileName"></a>
@@ -1685,7 +1689,27 @@
 <dl>
 <dt>Returns:</dt>
 <dd>
-filename of the displayed file (string)
+filename of the displayed file
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="MiniScintilla.keyPressEvent" ID="MiniScintilla.keyPressEvent"></a>
+<h4>MiniScintilla.keyPressEvent</h4>
+<b>keyPressEvent</b>(<i>ev</i>)
+
+<p>
+        Protected method to handle the user input a key at a time.
+</p>
+<dl>
+
+<dt><i>ev</i> (QKeyEvent)</dt>
+<dd>
+key event
 </dd>
 </dl>
 <a NAME="MiniScintilla.removeTrailingWhitespace" ID="MiniScintilla.removeTrailingWhitespace"></a>
--- a/eric6/Documentation/Source/eric6.QScintilla.Shell.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/eric6.QScintilla.Shell.html	Thu Dec 17 14:40:06 2020 +0100
@@ -1019,9 +1019,9 @@
 </p>
 <dl>
 
-<dt><i>more</i></dt>
+<dt><i>more</i> (bool)</dt>
 <dd>
-flag indicating that more user input is required (boolean)
+flag indicating that more user input is required
 </dd>
 </dl>
 <a NAME="Shell.__clientSyntaxError" ID="Shell.__clientSyntaxError"></a>
@@ -1292,7 +1292,7 @@
 </p>
 <a NAME="Shell.__raw_input" ID="Shell.__raw_input"></a>
 <h4>Shell.__raw_input</h4>
-<b>__raw_input</b>(<i>prompt, echo</i>)
+<b>__raw_input</b>(<i>prompt, echo, debuggerId</i>)
 
 <p>
         Private method to handle raw input.
@@ -1301,11 +1301,15 @@
 
 <dt><i>prompt</i> (str)</dt>
 <dd>
-prompt to be displayed
+the input prompt
 </dd>
 <dt><i>echo</i> (bool)</dt>
 <dd>
-Flag indicating echoing of the input
+flag indicating an echoing of the input
+</dd>
+<dt><i>debuggerId</i> (str)</dt>
+<dd>
+ID of the debugger backend
 </dd>
 </dl>
 <a NAME="Shell.__resetIncrementalHistorySearch" ID="Shell.__resetIncrementalHistorySearch"></a>
@@ -1538,7 +1542,7 @@
 </dl>
 <a NAME="Shell.__writeBanner" ID="Shell.__writeBanner"></a>
 <h4>Shell.__writeBanner</h4>
-<b>__writeBanner</b>(<i>version, platform, dbgclient, venvName</i>)
+<b>__writeBanner</b>(<i>version, platform, venvName</i>)
 
 <p>
         Private method to write a banner with info from the debug client.
@@ -1553,10 +1557,6 @@
 <dd>
 platform of the remote interpreter
 </dd>
-<dt><i>dbgclient</i> (str)</dt>
-<dd>
-debug client variant used
-</dd>
 <dt><i>venvName</i> (str)</dt>
 <dd>
 name of the virtual environment
--- a/eric6/Documentation/Source/index-eric6.DebugClients.Python.html	Thu Dec 17 14:30:46 2020 +0100
+++ b/eric6/Documentation/Source/index-eric6.DebugClients.Python.html	Thu Dec 17 14:40:06 2020 +0100
@@ -77,10 +77,30 @@
 <td>Word completion for the eric6 shell.</td>
 </tr>
 <tr>
+<td><a href="eric6.DebugClients.Python.ModuleLoader.html">ModuleLoader</a></td>
+<td>Module implementing an import hook patching modules to support debugging.</td>
+</tr>
+<tr>
+<td><a href="eric6.DebugClients.Python.MultiProcessDebugExtension.html">MultiProcessDebugExtension</a></td>
+<td>Module implementing a function to patch the process creation functions to support multiprocess debugging.</td>
+</tr>
+<tr>
+<td><a href="eric6.DebugClients.Python.MultiprocessingExtension.html">MultiprocessingExtension</a></td>
+<td>Module implementing a function to patch multiprocessing.Process to support debugging of the process.</td>
+</tr>
+<tr>
 <td><a href="eric6.DebugClients.Python.PyProfile.html">PyProfile</a></td>
 <td>Module defining additions to the standard Python profile.py.</td>
 </tr>
 <tr>
+<td><a href="eric6.DebugClients.Python.QProcessExtension.html">QProcessExtension</a></td>
+<td>Module implementing a function to patch QProcess to support debugging of the process.</td>
+</tr>
+<tr>
+<td><a href="eric6.DebugClients.Python.SubprocessExtension.html">SubprocessExtension</a></td>
+<td>Module implementing a function to patch subprocess.Popen to support debugging of the process.</td>
+</tr>
+<tr>
 <td><a href="eric6.DebugClients.Python.ThreadExtension.html">ThreadExtension</a></td>
 <td>Module implementing an import hook patching thread modules to get debugged too.</td>
 </tr>

eric ide

mercurial