Finished the call trace functionality.

Thu, 01 Nov 2012 18:48:50 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 01 Nov 2012 18:48:50 +0100
changeset 2173
c21d1e99015a
parent 2172
6d8eb5736925
child 2174
6c0e26b9df7b

Finished the call trace functionality.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
APIs/Python3/eric5.bas file | annotate | diff | comparison | revisions
Debugger/DebugServer.py file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.DebugClients.Python.DebugBase.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.DebugClients.Python.DebugProtocol.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.DebugClients.Python3.DebugBase.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.DebugClients.Python3.DebugProtocol.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.CallTraceViewer.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebugProtocol.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebugServer.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebugViewer.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebuggerInterfaceNone.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebuggerInterfacePython.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebuggerInterfacePython3.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebuggerInterfaceRuby.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Project.Project.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Debugger.html file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Thu Nov 01 18:35:44 2012 +0100
+++ b/APIs/Python3/eric5.api	Thu Nov 01 18:48:50 2012 +0100
@@ -234,6 +234,7 @@
 eric5.DebugClients.Python.DebugClientThreads._debugclient_start_new_thread?5(target, args, kwargs={})
 eric5.DebugClients.Python.DebugClientThreads._original_start_thread?8
 eric5.DebugClients.Python.DebugConfig.ConfigVarTypeStrings?7
+eric5.DebugClients.Python.DebugProtocol.CallTrace?7
 eric5.DebugClients.Python.DebugProtocol.DebugAddress?7
 eric5.DebugClients.Python.DebugProtocol.EOT?7
 eric5.DebugClients.Python.DebugProtocol.PassiveStartup?7
@@ -241,6 +242,7 @@
 eric5.DebugClients.Python.DebugProtocol.RequestBreak?7
 eric5.DebugClients.Python.DebugProtocol.RequestBreakEnable?7
 eric5.DebugClients.Python.DebugProtocol.RequestBreakIgnore?7
+eric5.DebugClients.Python.DebugProtocol.RequestCallTrace?7
 eric5.DebugClients.Python.DebugProtocol.RequestCapabilities?7
 eric5.DebugClients.Python.DebugProtocol.RequestCompletion?7
 eric5.DebugClients.Python.DebugProtocol.RequestContinue?7
@@ -446,6 +448,7 @@
 eric5.DebugClients.Python3.DebugClientThreads._debugclient_start_new_thread?5(target, args, kwargs={})
 eric5.DebugClients.Python3.DebugClientThreads._original_start_thread?8
 eric5.DebugClients.Python3.DebugConfig.ConfigVarTypeStrings?7
+eric5.DebugClients.Python3.DebugProtocol.CallTrace?7
 eric5.DebugClients.Python3.DebugProtocol.DebugAddress?7
 eric5.DebugClients.Python3.DebugProtocol.EOT?7
 eric5.DebugClients.Python3.DebugProtocol.PassiveStartup?7
@@ -453,6 +456,7 @@
 eric5.DebugClients.Python3.DebugProtocol.RequestBreak?7
 eric5.DebugClients.Python3.DebugProtocol.RequestBreakEnable?7
 eric5.DebugClients.Python3.DebugProtocol.RequestBreakIgnore?7
+eric5.DebugClients.Python3.DebugProtocol.RequestCallTrace?7
 eric5.DebugClients.Python3.DebugProtocol.RequestCapabilities?7
 eric5.DebugClients.Python3.DebugProtocol.RequestCompletion?7
 eric5.DebugClients.Python3.DebugProtocol.RequestContinue?7
@@ -568,6 +572,17 @@
 eric5.Debugger.BreakPointViewer.BreakPointViewer.setModel?4(model)
 eric5.Debugger.BreakPointViewer.BreakPointViewer.sourceFile?7
 eric5.Debugger.BreakPointViewer.BreakPointViewer?1(parent=None)
+eric5.Debugger.CallTraceViewer.CallTraceViewer.clear?4()
+eric5.Debugger.CallTraceViewer.CallTraceViewer.isCallTraceEnabled?4()
+eric5.Debugger.CallTraceViewer.CallTraceViewer.on_callTrace_itemDoubleClicked?4(item, column)
+eric5.Debugger.CallTraceViewer.CallTraceViewer.on_clearButton_clicked?4()
+eric5.Debugger.CallTraceViewer.CallTraceViewer.on_resizeButton_clicked?4()
+eric5.Debugger.CallTraceViewer.CallTraceViewer.on_saveButton_clicked?4()
+eric5.Debugger.CallTraceViewer.CallTraceViewer.on_startTraceButton_clicked?4()
+eric5.Debugger.CallTraceViewer.CallTraceViewer.on_stopTraceButton_clicked?4()
+eric5.Debugger.CallTraceViewer.CallTraceViewer.setProjectMode?4(enabled)
+eric5.Debugger.CallTraceViewer.CallTraceViewer.sourceFile?7
+eric5.Debugger.CallTraceViewer.CallTraceViewer?1(debugServer, parent=None)
 eric5.Debugger.DebugClientCapabilities.HasAll?7
 eric5.Debugger.DebugClientCapabilities.HasCompleter?7
 eric5.Debugger.DebugClientCapabilities.HasCoverage?7
@@ -576,12 +591,14 @@
 eric5.Debugger.DebugClientCapabilities.HasProfiler?7
 eric5.Debugger.DebugClientCapabilities.HasShell?7
 eric5.Debugger.DebugClientCapabilities.HasUnittest?7
+eric5.Debugger.DebugProtocol.CallTrace?7
 eric5.Debugger.DebugProtocol.EOT?7
 eric5.Debugger.DebugProtocol.PassiveStartup?7
 eric5.Debugger.DebugProtocol.RequestBanner?7
 eric5.Debugger.DebugProtocol.RequestBreak?7
 eric5.Debugger.DebugProtocol.RequestBreakEnable?7
 eric5.Debugger.DebugProtocol.RequestBreakIgnore?7
+eric5.Debugger.DebugProtocol.RequestCallTrace?7
 eric5.Debugger.DebugProtocol.RequestCapabilities?7
 eric5.Debugger.DebugProtocol.RequestCompletion?7
 eric5.Debugger.DebugProtocol.RequestContinue?7
@@ -640,6 +657,7 @@
 eric5.Debugger.DebugProtocol.ResponseVariable?7
 eric5.Debugger.DebugProtocol.ResponseVariables?7
 eric5.Debugger.DebugProtocol.ResponseWPConditionError?7
+eric5.Debugger.DebugServer.DebugServer.callTraceInfo?7
 eric5.Debugger.DebugServer.DebugServer.clientBanner?7
 eric5.Debugger.DebugServer.DebugServer.clientBreakConditionError?7
 eric5.Debugger.DebugServer.DebugServer.clientCapabilities?7
@@ -694,7 +712,7 @@
 eric5.Debugger.DebugServer.DebugServer.remoteEnvironment?4(env)
 eric5.Debugger.DebugServer.DebugServer.remoteEval?4(arg)
 eric5.Debugger.DebugServer.DebugServer.remoteExec?4(stmt)
-eric5.Debugger.DebugServer.DebugServer.remoteLoad?4(fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType="")
+eric5.Debugger.DebugServer.DebugServer.remoteLoad?4(fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType="", enableCallTrace=False)
 eric5.Debugger.DebugServer.DebugServer.remoteProfile?4(fn, argv, wd, env, autoClearShell=True, erase=False, forProject=False, runInConsole=False, clientType="")
 eric5.Debugger.DebugServer.DebugServer.remoteRawInput?4(s)
 eric5.Debugger.DebugServer.DebugServer.remoteRun?4(fn, argv, wd, env, autoClearShell=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType="")
@@ -708,9 +726,11 @@
 eric5.Debugger.DebugServer.DebugServer.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase, clientType="")
 eric5.Debugger.DebugServer.DebugServer.remoteUTRun?4()
 eric5.Debugger.DebugServer.DebugServer.remoteUTStop?4()
+eric5.Debugger.DebugServer.DebugServer.setCallTraceEnabled?4(on)
 eric5.Debugger.DebugServer.DebugServer.shutdownServer?4()
 eric5.Debugger.DebugServer.DebugServer.signalClientBanner?4(version, platform, debugClient)
 eric5.Debugger.DebugServer.DebugServer.signalClientBreakConditionError?4(filename, lineno)
+eric5.Debugger.DebugServer.DebugServer.signalClientCallTrace?4(isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction)
 eric5.Debugger.DebugServer.DebugServer.signalClientCapabilities?4(capabilities, clientType)
 eric5.Debugger.DebugServer.DebugServer.signalClientClearBreak?4(filename, lineno)
 eric5.Debugger.DebugServer.DebugServer.signalClientClearWatch?4(condition)
@@ -764,14 +784,17 @@
 eric5.Debugger.DebugUI.DebugUI.shutdownServer?4()
 eric5.Debugger.DebugUI.DebugUI.variablesFilter?4(scope)
 eric5.Debugger.DebugUI.DebugUI?1(ui, vm, debugServer, debugViewer, project)
+eric5.Debugger.DebugViewer.DebugViewer.clearCallTrace?4()
 eric5.Debugger.DebugViewer.DebugViewer.currentWidget?4()
 eric5.Debugger.DebugViewer.DebugViewer.handleClientStack?4(stack)
 eric5.Debugger.DebugViewer.DebugViewer.handleDebuggingStarted?4()
 eric5.Debugger.DebugViewer.DebugViewer.handleRawInput?4()
 eric5.Debugger.DebugViewer.DebugViewer.handleResetUI?4()
+eric5.Debugger.DebugViewer.DebugViewer.isCallTraceEnabled?4()
 eric5.Debugger.DebugViewer.DebugViewer.preferencesChanged?4()
 eric5.Debugger.DebugViewer.DebugViewer.restoreCurrentPage?4()
 eric5.Debugger.DebugViewer.DebugViewer.saveCurrentPage?4()
+eric5.Debugger.DebugViewer.DebugViewer.setCallTraceToProjectMode?4(enabled)
 eric5.Debugger.DebugViewer.DebugViewer.setCurrentWidget?4(widget)
 eric5.Debugger.DebugViewer.DebugViewer.setDebugger?4(debugUI)
 eric5.Debugger.DebugViewer.DebugViewer.setVariablesFilter?4(globalsFilter, localsFilter)
@@ -818,6 +841,7 @@
 eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpoint?4(cond, set, temp=False)
 eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpointEnable?4(cond, enable)
 eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpointIgnore?4(cond, count)
+eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.setCallTraceEnabled?4(on)
 eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.shutdown?4()
 eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemote?4(port, runInConsole)
 eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemoteForProject?4(port, runInConsole)
@@ -859,6 +883,7 @@
 eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpoint?4(cond, set, temp=False)
 eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointEnable?4(cond, enable)
 eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointIgnore?4(cond, count)
+eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.setCallTraceEnabled?4(on)
 eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.shutdown?4()
 eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemote?4(port, runInConsole)
 eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemoteForProject?4(port, runInConsole)
@@ -900,6 +925,7 @@
 eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpoint?4(cond, set, temp=False)
 eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpointEnable?4(cond, enable)
 eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpointIgnore?4(cond, count)
+eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.setCallTraceEnabled?4(on)
 eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.shutdown?4()
 eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.startRemote?4(port, runInConsole)
 eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.startRemoteForProject?4(port, runInConsole)
@@ -942,6 +968,7 @@
 eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteWatchpoint?4(cond, set, temp=False)
 eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteWatchpointEnable?4(cond, enable)
 eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteWatchpointIgnore?4(cond, count)
+eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.setCallTraceEnabled?4(on)
 eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.shutdown?4()
 eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.startRemote?4(port, runInConsole)
 eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.startRemoteForProject?4(port, runInConsole)
@@ -5805,6 +5832,7 @@
 eric5.Project.Project.Project.directoryRemoved?7
 eric5.Project.Project.Project.dirty?7
 eric5.Project.Project.Project.eols?7
+eric5.Project.Project.Project.getAbsolutePath?4(fn)
 eric5.Project.Project.Project.getAbsoluteUniversalPath?4(fn)
 eric5.Project.Project.Project.getActions?4()
 eric5.Project.Project.Project.getData?4(category, key)
--- a/APIs/Python3/eric5.bas	Thu Nov 01 18:35:44 2012 +0100
+++ b/APIs/Python3/eric5.bas	Thu Nov 01 18:48:50 2012 +0100
@@ -58,6 +58,7 @@
 BrowserModel QAbstractItemModel
 BrowserSortFilterProxyModel QSortFilterProxyModel
 BrowserSysPathItem BrowserItem
+CallTraceViewer QWidget Ui_CallTraceViewer
 ChangeBookmarkCommand QUndoCommand
 ChatWidget QWidget Ui_ChatWidget
 ChromeImporter BookmarksImporter
--- a/Debugger/DebugServer.py	Thu Nov 01 18:35:44 2012 +0100
+++ b/Debugger/DebugServer.py	Thu Nov 01 18:48:50 2012 +0100
@@ -95,8 +95,8 @@
             an expected test failure
     @signal utTestSucceededUnexpected(testname, id) emitted after the client reported
             an unexpected test success
-    @signal callTraceInfo(isCall, fromFile, fromLine, fromFunction, toFile, toLine,
-            toFunction) emitted after the client reported the call trace data
+    @signal callTraceInfo(isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction)
+            emitted after the client reported the call trace data
     """
     clientClearBreak = pyqtSignal(str, int)
     clientClearWatch = pyqtSignal(str)
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Help/source.qhp	Thu Nov 01 18:48:50 2012 +0100
@@ -77,6 +77,7 @@
           <section title="eric5.Debugger" ref="index-eric5.Debugger.html">
             <section title="eric5.Debugger.BreakPointModel" ref="eric5.Debugger.BreakPointModel.html" />
             <section title="eric5.Debugger.BreakPointViewer" ref="eric5.Debugger.BreakPointViewer.html" />
+            <section title="eric5.Debugger.CallTraceViewer" ref="eric5.Debugger.CallTraceViewer.html" />
             <section title="eric5.Debugger.Config" ref="eric5.Debugger.Config.html" />
             <section title="eric5.Debugger.DebugClientCapabilities" ref="eric5.Debugger.DebugClientCapabilities.html" />
             <section title="eric5.Debugger.DebugProtocol" ref="eric5.Debugger.DebugProtocol.html" />
@@ -1833,6 +1834,20 @@
       <keyword name="BrowserSortFilterProxyModel.sort" id="BrowserSortFilterProxyModel.sort" ref="eric5.UI.BrowserSortFilterProxyModel.html#BrowserSortFilterProxyModel.sort" />
       <keyword name="BrowserSysPathItem" id="BrowserSysPathItem" ref="eric5.UI.BrowserModel.html#BrowserSysPathItem" />
       <keyword name="BrowserSysPathItem (Constructor)" id="BrowserSysPathItem (Constructor)" ref="eric5.UI.BrowserModel.html#BrowserSysPathItem.__init__" />
+      <keyword name="CallTraceViewer" id="CallTraceViewer" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer" />
+      <keyword name="CallTraceViewer (Constructor)" id="CallTraceViewer (Constructor)" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.__init__" />
+      <keyword name="CallTraceViewer (Module)" id="CallTraceViewer (Module)" ref="eric5.Debugger.CallTraceViewer.html" />
+      <keyword name="CallTraceViewer.__addCallTraceInfo" id="CallTraceViewer.__addCallTraceInfo" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.__addCallTraceInfo" />
+      <keyword name="CallTraceViewer.__setCallTraceEnabled" id="CallTraceViewer.__setCallTraceEnabled" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.__setCallTraceEnabled" />
+      <keyword name="CallTraceViewer.clear" id="CallTraceViewer.clear" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.clear" />
+      <keyword name="CallTraceViewer.isCallTraceEnabled" id="CallTraceViewer.isCallTraceEnabled" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.isCallTraceEnabled" />
+      <keyword name="CallTraceViewer.on_callTrace_itemDoubleClicked" id="CallTraceViewer.on_callTrace_itemDoubleClicked" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.on_callTrace_itemDoubleClicked" />
+      <keyword name="CallTraceViewer.on_clearButton_clicked" id="CallTraceViewer.on_clearButton_clicked" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.on_clearButton_clicked" />
+      <keyword name="CallTraceViewer.on_resizeButton_clicked" id="CallTraceViewer.on_resizeButton_clicked" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.on_resizeButton_clicked" />
+      <keyword name="CallTraceViewer.on_saveButton_clicked" id="CallTraceViewer.on_saveButton_clicked" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.on_saveButton_clicked" />
+      <keyword name="CallTraceViewer.on_startTraceButton_clicked" id="CallTraceViewer.on_startTraceButton_clicked" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.on_startTraceButton_clicked" />
+      <keyword name="CallTraceViewer.on_stopTraceButton_clicked" id="CallTraceViewer.on_stopTraceButton_clicked" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.on_stopTraceButton_clicked" />
+      <keyword name="CallTraceViewer.setProjectMode" id="CallTraceViewer.setProjectMode" ref="eric5.Debugger.CallTraceViewer.html#CallTraceViewer.setProjectMode" />
       <keyword name="ChangeBookmarkCommand" id="ChangeBookmarkCommand" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#ChangeBookmarkCommand" />
       <keyword name="ChangeBookmarkCommand (Constructor)" id="ChangeBookmarkCommand (Constructor)" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#ChangeBookmarkCommand.__init__" />
       <keyword name="ChangeBookmarkCommand.redo" id="ChangeBookmarkCommand.redo" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#ChangeBookmarkCommand.redo" />
@@ -2501,6 +2516,8 @@
       <keyword name="DebugBase.__extractExceptionName" id="DebugBase.__extractExceptionName" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.__extractExceptionName" />
       <keyword name="DebugBase.__extract_stack" id="DebugBase.__extract_stack" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.__extract_stack" />
       <keyword name="DebugBase.__extract_stack" id="DebugBase.__extract_stack" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.__extract_stack" />
+      <keyword name="DebugBase.__sendCallTrace" id="DebugBase.__sendCallTrace" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.__sendCallTrace" />
+      <keyword name="DebugBase.__sendCallTrace" id="DebugBase.__sendCallTrace" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.__sendCallTrace" />
       <keyword name="DebugBase.__skip_it" id="DebugBase.__skip_it" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.__skip_it" />
       <keyword name="DebugBase.__skip_it" id="DebugBase.__skip_it" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.__skip_it" />
       <keyword name="DebugBase.break_anywhere" id="DebugBase.break_anywhere" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.break_anywhere" />
@@ -2783,9 +2800,11 @@
       <keyword name="DebugServer.remoteUTPrepare" id="DebugServer.remoteUTPrepare" ref="eric5.Debugger.DebugServer.html#DebugServer.remoteUTPrepare" />
       <keyword name="DebugServer.remoteUTRun" id="DebugServer.remoteUTRun" ref="eric5.Debugger.DebugServer.html#DebugServer.remoteUTRun" />
       <keyword name="DebugServer.remoteUTStop" id="DebugServer.remoteUTStop" ref="eric5.Debugger.DebugServer.html#DebugServer.remoteUTStop" />
+      <keyword name="DebugServer.setCallTraceEnabled" id="DebugServer.setCallTraceEnabled" ref="eric5.Debugger.DebugServer.html#DebugServer.setCallTraceEnabled" />
       <keyword name="DebugServer.shutdownServer" id="DebugServer.shutdownServer" ref="eric5.Debugger.DebugServer.html#DebugServer.shutdownServer" />
       <keyword name="DebugServer.signalClientBanner" id="DebugServer.signalClientBanner" ref="eric5.Debugger.DebugServer.html#DebugServer.signalClientBanner" />
       <keyword name="DebugServer.signalClientBreakConditionError" id="DebugServer.signalClientBreakConditionError" ref="eric5.Debugger.DebugServer.html#DebugServer.signalClientBreakConditionError" />
+      <keyword name="DebugServer.signalClientCallTrace" id="DebugServer.signalClientCallTrace" ref="eric5.Debugger.DebugServer.html#DebugServer.signalClientCallTrace" />
       <keyword name="DebugServer.signalClientCapabilities" id="DebugServer.signalClientCapabilities" ref="eric5.Debugger.DebugServer.html#DebugServer.signalClientCapabilities" />
       <keyword name="DebugServer.signalClientClearBreak" id="DebugServer.signalClientClearBreak" ref="eric5.Debugger.DebugServer.html#DebugServer.signalClientClearBreak" />
       <keyword name="DebugServer.signalClientClearWatch" id="DebugServer.signalClientClearWatch" ref="eric5.Debugger.DebugServer.html#DebugServer.signalClientClearWatch" />
@@ -2905,14 +2924,17 @@
       <keyword name="DebugViewer.__setLocalsFilter" id="DebugViewer.__setLocalsFilter" ref="eric5.Debugger.DebugViewer.html#DebugViewer.__setLocalsFilter" />
       <keyword name="DebugViewer.__showSource" id="DebugViewer.__showSource" ref="eric5.Debugger.DebugViewer.html#DebugViewer.__showSource" />
       <keyword name="DebugViewer.__threadSelected" id="DebugViewer.__threadSelected" ref="eric5.Debugger.DebugViewer.html#DebugViewer.__threadSelected" />
+      <keyword name="DebugViewer.clearCallTrace" id="DebugViewer.clearCallTrace" ref="eric5.Debugger.DebugViewer.html#DebugViewer.clearCallTrace" />
       <keyword name="DebugViewer.currentWidget" id="DebugViewer.currentWidget" ref="eric5.Debugger.DebugViewer.html#DebugViewer.currentWidget" />
       <keyword name="DebugViewer.handleClientStack" id="DebugViewer.handleClientStack" ref="eric5.Debugger.DebugViewer.html#DebugViewer.handleClientStack" />
       <keyword name="DebugViewer.handleDebuggingStarted" id="DebugViewer.handleDebuggingStarted" ref="eric5.Debugger.DebugViewer.html#DebugViewer.handleDebuggingStarted" />
       <keyword name="DebugViewer.handleRawInput" id="DebugViewer.handleRawInput" ref="eric5.Debugger.DebugViewer.html#DebugViewer.handleRawInput" />
       <keyword name="DebugViewer.handleResetUI" id="DebugViewer.handleResetUI" ref="eric5.Debugger.DebugViewer.html#DebugViewer.handleResetUI" />
+      <keyword name="DebugViewer.isCallTraceEnabled" id="DebugViewer.isCallTraceEnabled" ref="eric5.Debugger.DebugViewer.html#DebugViewer.isCallTraceEnabled" />
       <keyword name="DebugViewer.preferencesChanged" id="DebugViewer.preferencesChanged" ref="eric5.Debugger.DebugViewer.html#DebugViewer.preferencesChanged" />
       <keyword name="DebugViewer.restoreCurrentPage" id="DebugViewer.restoreCurrentPage" ref="eric5.Debugger.DebugViewer.html#DebugViewer.restoreCurrentPage" />
       <keyword name="DebugViewer.saveCurrentPage" id="DebugViewer.saveCurrentPage" ref="eric5.Debugger.DebugViewer.html#DebugViewer.saveCurrentPage" />
+      <keyword name="DebugViewer.setCallTraceToProjectMode" id="DebugViewer.setCallTraceToProjectMode" ref="eric5.Debugger.DebugViewer.html#DebugViewer.setCallTraceToProjectMode" />
       <keyword name="DebugViewer.setCurrentWidget" id="DebugViewer.setCurrentWidget" ref="eric5.Debugger.DebugViewer.html#DebugViewer.setCurrentWidget" />
       <keyword name="DebugViewer.setDebugger" id="DebugViewer.setDebugger" ref="eric5.Debugger.DebugViewer.html#DebugViewer.setDebugger" />
       <keyword name="DebugViewer.setVariablesFilter" id="DebugViewer.setVariablesFilter" ref="eric5.Debugger.DebugViewer.html#DebugViewer.setVariablesFilter" />
@@ -2968,6 +2990,7 @@
       <keyword name="DebuggerInterfaceNone.remoteWatchpoint" id="DebuggerInterfaceNone.remoteWatchpoint" ref="eric5.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteWatchpoint" />
       <keyword name="DebuggerInterfaceNone.remoteWatchpointEnable" id="DebuggerInterfaceNone.remoteWatchpointEnable" ref="eric5.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteWatchpointEnable" />
       <keyword name="DebuggerInterfaceNone.remoteWatchpointIgnore" id="DebuggerInterfaceNone.remoteWatchpointIgnore" ref="eric5.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.remoteWatchpointIgnore" />
+      <keyword name="DebuggerInterfaceNone.setCallTraceEnabled" id="DebuggerInterfaceNone.setCallTraceEnabled" ref="eric5.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.setCallTraceEnabled" />
       <keyword name="DebuggerInterfaceNone.shutdown" id="DebuggerInterfaceNone.shutdown" ref="eric5.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.shutdown" />
       <keyword name="DebuggerInterfaceNone.startRemote" id="DebuggerInterfaceNone.startRemote" ref="eric5.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.startRemote" />
       <keyword name="DebuggerInterfaceNone.startRemoteForProject" id="DebuggerInterfaceNone.startRemoteForProject" ref="eric5.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.startRemoteForProject" />
@@ -3015,6 +3038,7 @@
       <keyword name="DebuggerInterfacePython.remoteWatchpoint" id="DebuggerInterfacePython.remoteWatchpoint" ref="eric5.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteWatchpoint" />
       <keyword name="DebuggerInterfacePython.remoteWatchpointEnable" id="DebuggerInterfacePython.remoteWatchpointEnable" ref="eric5.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteWatchpointEnable" />
       <keyword name="DebuggerInterfacePython.remoteWatchpointIgnore" id="DebuggerInterfacePython.remoteWatchpointIgnore" ref="eric5.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteWatchpointIgnore" />
+      <keyword name="DebuggerInterfacePython.setCallTraceEnabled" id="DebuggerInterfacePython.setCallTraceEnabled" ref="eric5.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.setCallTraceEnabled" />
       <keyword name="DebuggerInterfacePython.shutdown" id="DebuggerInterfacePython.shutdown" ref="eric5.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.shutdown" />
       <keyword name="DebuggerInterfacePython.startRemote" id="DebuggerInterfacePython.startRemote" ref="eric5.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.startRemote" />
       <keyword name="DebuggerInterfacePython.startRemoteForProject" id="DebuggerInterfacePython.startRemoteForProject" ref="eric5.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.startRemoteForProject" />
@@ -3062,6 +3086,7 @@
       <keyword name="DebuggerInterfacePython3.remoteWatchpoint" id="DebuggerInterfacePython3.remoteWatchpoint" ref="eric5.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteWatchpoint" />
       <keyword name="DebuggerInterfacePython3.remoteWatchpointEnable" id="DebuggerInterfacePython3.remoteWatchpointEnable" ref="eric5.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteWatchpointEnable" />
       <keyword name="DebuggerInterfacePython3.remoteWatchpointIgnore" id="DebuggerInterfacePython3.remoteWatchpointIgnore" ref="eric5.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteWatchpointIgnore" />
+      <keyword name="DebuggerInterfacePython3.setCallTraceEnabled" id="DebuggerInterfacePython3.setCallTraceEnabled" ref="eric5.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.setCallTraceEnabled" />
       <keyword name="DebuggerInterfacePython3.shutdown" id="DebuggerInterfacePython3.shutdown" ref="eric5.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.shutdown" />
       <keyword name="DebuggerInterfacePython3.startRemote" id="DebuggerInterfacePython3.startRemote" ref="eric5.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.startRemote" />
       <keyword name="DebuggerInterfacePython3.startRemoteForProject" id="DebuggerInterfacePython3.startRemoteForProject" ref="eric5.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.startRemoteForProject" />
@@ -3108,6 +3133,7 @@
       <keyword name="DebuggerInterfaceRuby.remoteWatchpoint" id="DebuggerInterfaceRuby.remoteWatchpoint" ref="eric5.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteWatchpoint" />
       <keyword name="DebuggerInterfaceRuby.remoteWatchpointEnable" id="DebuggerInterfaceRuby.remoteWatchpointEnable" ref="eric5.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteWatchpointEnable" />
       <keyword name="DebuggerInterfaceRuby.remoteWatchpointIgnore" id="DebuggerInterfaceRuby.remoteWatchpointIgnore" ref="eric5.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.remoteWatchpointIgnore" />
+      <keyword name="DebuggerInterfaceRuby.setCallTraceEnabled" id="DebuggerInterfaceRuby.setCallTraceEnabled" ref="eric5.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.setCallTraceEnabled" />
       <keyword name="DebuggerInterfaceRuby.shutdown" id="DebuggerInterfaceRuby.shutdown" ref="eric5.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.shutdown" />
       <keyword name="DebuggerInterfaceRuby.startRemote" id="DebuggerInterfaceRuby.startRemote" ref="eric5.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.startRemote" />
       <keyword name="DebuggerInterfaceRuby.startRemoteForProject" id="DebuggerInterfaceRuby.startRemoteForProject" ref="eric5.Debugger.DebuggerInterfaceRuby.html#DebuggerInterfaceRuby.startRemoteForProject" />
@@ -7810,6 +7836,7 @@
       <keyword name="Project.deleteDirectory" id="Project.deleteDirectory" ref="eric5.Project.Project.html#Project.deleteDirectory" />
       <keyword name="Project.deleteFile" id="Project.deleteFile" ref="eric5.Project.Project.html#Project.deleteFile" />
       <keyword name="Project.deleteLanguageFile" id="Project.deleteLanguageFile" ref="eric5.Project.Project.html#Project.deleteLanguageFile" />
+      <keyword name="Project.getAbsolutePath" id="Project.getAbsolutePath" ref="eric5.Project.Project.html#Project.getAbsolutePath" />
       <keyword name="Project.getAbsoluteUniversalPath" id="Project.getAbsoluteUniversalPath" ref="eric5.Project.Project.html#Project.getAbsoluteUniversalPath" />
       <keyword name="Project.getActions" id="Project.getActions" ref="eric5.Project.Project.html#Project.getActions" />
       <keyword name="Project.getData" id="Project.getData" ref="eric5.Project.Project.html#Project.getData" />
@@ -12538,6 +12565,7 @@
       <file>eric5.DebugClients.Ruby.__init__.html</file>
       <file>eric5.Debugger.BreakPointModel.html</file>
       <file>eric5.Debugger.BreakPointViewer.html</file>
+      <file>eric5.Debugger.CallTraceViewer.html</file>
       <file>eric5.Debugger.Config.html</file>
       <file>eric5.Debugger.DebugClientCapabilities.html</file>
       <file>eric5.Debugger.DebugProtocol.html</file>
--- a/Documentation/Source/eric5.DebugClients.Python.DebugBase.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.DebugClients.Python.DebugBase.html	Thu Nov 01 18:48:50 2012 +0100
@@ -82,6 +82,9 @@
 <td><a href="#DebugBase.__extract_stack">__extract_stack</a></td>
 <td>Private member to return a list of stack frames.</td>
 </tr><tr>
+<td><a href="#DebugBase.__sendCallTrace">__sendCallTrace</a></td>
+<td>Private method to send a call/return trace.</td>
+</tr><tr>
 <td><a href="#DebugBase.__skip_it">__skip_it</a></td>
 <td>Private method to filter out debugger files.</td>
 </tr><tr>
@@ -238,6 +241,22 @@
 <dd>
 list of stack frames
 </dd>
+</dl><a NAME="DebugBase.__sendCallTrace" ID="DebugBase.__sendCallTrace"></a>
+<h4>DebugBase.__sendCallTrace</h4>
+<b>__sendCallTrace</b>(<i>event, fromFrame, toFrame</i>)
+<p>
+        Private method to send a call/return trace.
+</p><dl>
+<dt><i>event</i></dt>
+<dd>
+trace event (string)
+</dd><dt><i>fromFrame</i></dt>
+<dd>
+originating frame (frame)
+</dd><dt><i>toFrame</i></dt>
+<dd>
+destination frame (frame)
+</dd>
 </dl><a NAME="DebugBase.__skip_it" ID="DebugBase.__skip_it"></a>
 <h4>DebugBase.__skip_it</h4>
 <b>__skip_it</b>(<i>frame</i>)
--- a/Documentation/Source/eric5.DebugClients.Python.DebugProtocol.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.DebugClients.Python.DebugProtocol.html	Thu Nov 01 18:48:50 2012 +0100
@@ -26,7 +26,7 @@
 </p>
 <h3>Global Attributes</h3>
 <table>
-<tr><td>DebugAddress</td></tr><tr><td>EOT</td></tr><tr><td>PassiveStartup</td></tr><tr><td>RequestBanner</td></tr><tr><td>RequestBreak</td></tr><tr><td>RequestBreakEnable</td></tr><tr><td>RequestBreakIgnore</td></tr><tr><td>RequestCapabilities</td></tr><tr><td>RequestCompletion</td></tr><tr><td>RequestContinue</td></tr><tr><td>RequestCoverage</td></tr><tr><td>RequestEnv</td></tr><tr><td>RequestEval</td></tr><tr><td>RequestExec</td></tr><tr><td>RequestForkMode</td></tr><tr><td>RequestForkTo</td></tr><tr><td>RequestLoad</td></tr><tr><td>RequestOK</td></tr><tr><td>RequestProfile</td></tr><tr><td>RequestRun</td></tr><tr><td>RequestSetFilter</td></tr><tr><td>RequestShutdown</td></tr><tr><td>RequestStep</td></tr><tr><td>RequestStepOut</td></tr><tr><td>RequestStepOver</td></tr><tr><td>RequestStepQuit</td></tr><tr><td>RequestThreadList</td></tr><tr><td>RequestThreadSet</td></tr><tr><td>RequestUTPrepare</td></tr><tr><td>RequestUTRun</td></tr><tr><td>RequestUTStop</td></tr><tr><td>RequestVariable</td></tr><tr><td>RequestVariables</td></tr><tr><td>RequestWatch</td></tr><tr><td>RequestWatchEnable</td></tr><tr><td>RequestWatchIgnore</td></tr><tr><td>ResponseBPConditionError</td></tr><tr><td>ResponseBanner</td></tr><tr><td>ResponseCapabilities</td></tr><tr><td>ResponseClearBreak</td></tr><tr><td>ResponseClearWatch</td></tr><tr><td>ResponseCompletion</td></tr><tr><td>ResponseContinue</td></tr><tr><td>ResponseException</td></tr><tr><td>ResponseExit</td></tr><tr><td>ResponseForkTo</td></tr><tr><td>ResponseLine</td></tr><tr><td>ResponseOK</td></tr><tr><td>ResponseRaw</td></tr><tr><td>ResponseStack</td></tr><tr><td>ResponseSyntax</td></tr><tr><td>ResponseThreadList</td></tr><tr><td>ResponseThreadSet</td></tr><tr><td>ResponseUTFinished</td></tr><tr><td>ResponseUTPrepared</td></tr><tr><td>ResponseUTStartTest</td></tr><tr><td>ResponseUTStopTest</td></tr><tr><td>ResponseUTTestErrored</td></tr><tr><td>ResponseUTTestFailed</td></tr><tr><td>ResponseUTTestFailedExpected</td></tr><tr><td>ResponseUTTestSkipped</td></tr><tr><td>ResponseUTTestSucceededUnexpected</td></tr><tr><td>ResponseVariable</td></tr><tr><td>ResponseVariables</td></tr><tr><td>ResponseWPConditionError</td></tr>
+<tr><td>CallTrace</td></tr><tr><td>DebugAddress</td></tr><tr><td>EOT</td></tr><tr><td>PassiveStartup</td></tr><tr><td>RequestBanner</td></tr><tr><td>RequestBreak</td></tr><tr><td>RequestBreakEnable</td></tr><tr><td>RequestBreakIgnore</td></tr><tr><td>RequestCallTrace</td></tr><tr><td>RequestCapabilities</td></tr><tr><td>RequestCompletion</td></tr><tr><td>RequestContinue</td></tr><tr><td>RequestCoverage</td></tr><tr><td>RequestEnv</td></tr><tr><td>RequestEval</td></tr><tr><td>RequestExec</td></tr><tr><td>RequestForkMode</td></tr><tr><td>RequestForkTo</td></tr><tr><td>RequestLoad</td></tr><tr><td>RequestOK</td></tr><tr><td>RequestProfile</td></tr><tr><td>RequestRun</td></tr><tr><td>RequestSetFilter</td></tr><tr><td>RequestShutdown</td></tr><tr><td>RequestStep</td></tr><tr><td>RequestStepOut</td></tr><tr><td>RequestStepOver</td></tr><tr><td>RequestStepQuit</td></tr><tr><td>RequestThreadList</td></tr><tr><td>RequestThreadSet</td></tr><tr><td>RequestUTPrepare</td></tr><tr><td>RequestUTRun</td></tr><tr><td>RequestUTStop</td></tr><tr><td>RequestVariable</td></tr><tr><td>RequestVariables</td></tr><tr><td>RequestWatch</td></tr><tr><td>RequestWatchEnable</td></tr><tr><td>RequestWatchIgnore</td></tr><tr><td>ResponseBPConditionError</td></tr><tr><td>ResponseBanner</td></tr><tr><td>ResponseCapabilities</td></tr><tr><td>ResponseClearBreak</td></tr><tr><td>ResponseClearWatch</td></tr><tr><td>ResponseCompletion</td></tr><tr><td>ResponseContinue</td></tr><tr><td>ResponseException</td></tr><tr><td>ResponseExit</td></tr><tr><td>ResponseForkTo</td></tr><tr><td>ResponseLine</td></tr><tr><td>ResponseOK</td></tr><tr><td>ResponseRaw</td></tr><tr><td>ResponseStack</td></tr><tr><td>ResponseSyntax</td></tr><tr><td>ResponseThreadList</td></tr><tr><td>ResponseThreadSet</td></tr><tr><td>ResponseUTFinished</td></tr><tr><td>ResponseUTPrepared</td></tr><tr><td>ResponseUTStartTest</td></tr><tr><td>ResponseUTStopTest</td></tr><tr><td>ResponseUTTestErrored</td></tr><tr><td>ResponseUTTestFailed</td></tr><tr><td>ResponseUTTestFailedExpected</td></tr><tr><td>ResponseUTTestSkipped</td></tr><tr><td>ResponseUTTestSucceededUnexpected</td></tr><tr><td>ResponseVariable</td></tr><tr><td>ResponseVariables</td></tr><tr><td>ResponseWPConditionError</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
--- a/Documentation/Source/eric5.DebugClients.Python3.DebugBase.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.DebugClients.Python3.DebugBase.html	Thu Nov 01 18:48:50 2012 +0100
@@ -85,6 +85,9 @@
 <td><a href="#DebugBase.__extract_stack">__extract_stack</a></td>
 <td>Private member to return a list of stack frames.</td>
 </tr><tr>
+<td><a href="#DebugBase.__sendCallTrace">__sendCallTrace</a></td>
+<td>Private method to send a call/return trace.</td>
+</tr><tr>
 <td><a href="#DebugBase.__skip_it">__skip_it</a></td>
 <td>Private method to filter out debugger files.</td>
 </tr><tr>
@@ -252,6 +255,22 @@
 <dd>
 list of stack frames
 </dd>
+</dl><a NAME="DebugBase.__sendCallTrace" ID="DebugBase.__sendCallTrace"></a>
+<h4>DebugBase.__sendCallTrace</h4>
+<b>__sendCallTrace</b>(<i>event, fromFrame, toFrame</i>)
+<p>
+        Private method to send a call/return trace.
+</p><dl>
+<dt><i>event</i></dt>
+<dd>
+trace event (string)
+</dd><dt><i>fromFrame</i></dt>
+<dd>
+originating frame (frame)
+</dd><dt><i>toFrame</i></dt>
+<dd>
+destination frame (frame)
+</dd>
 </dl><a NAME="DebugBase.__skip_it" ID="DebugBase.__skip_it"></a>
 <h4>DebugBase.__skip_it</h4>
 <b>__skip_it</b>(<i>frame</i>)
--- a/Documentation/Source/eric5.DebugClients.Python3.DebugProtocol.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.DebugClients.Python3.DebugProtocol.html	Thu Nov 01 18:48:50 2012 +0100
@@ -26,7 +26,7 @@
 </p>
 <h3>Global Attributes</h3>
 <table>
-<tr><td>DebugAddress</td></tr><tr><td>EOT</td></tr><tr><td>PassiveStartup</td></tr><tr><td>RequestBanner</td></tr><tr><td>RequestBreak</td></tr><tr><td>RequestBreakEnable</td></tr><tr><td>RequestBreakIgnore</td></tr><tr><td>RequestCapabilities</td></tr><tr><td>RequestCompletion</td></tr><tr><td>RequestContinue</td></tr><tr><td>RequestCoverage</td></tr><tr><td>RequestEnv</td></tr><tr><td>RequestEval</td></tr><tr><td>RequestExec</td></tr><tr><td>RequestForkMode</td></tr><tr><td>RequestForkTo</td></tr><tr><td>RequestLoad</td></tr><tr><td>RequestOK</td></tr><tr><td>RequestProfile</td></tr><tr><td>RequestRun</td></tr><tr><td>RequestSetFilter</td></tr><tr><td>RequestShutdown</td></tr><tr><td>RequestStep</td></tr><tr><td>RequestStepOut</td></tr><tr><td>RequestStepOver</td></tr><tr><td>RequestStepQuit</td></tr><tr><td>RequestThreadList</td></tr><tr><td>RequestThreadSet</td></tr><tr><td>RequestUTPrepare</td></tr><tr><td>RequestUTRun</td></tr><tr><td>RequestUTStop</td></tr><tr><td>RequestVariable</td></tr><tr><td>RequestVariables</td></tr><tr><td>RequestWatch</td></tr><tr><td>RequestWatchEnable</td></tr><tr><td>RequestWatchIgnore</td></tr><tr><td>ResponseBPConditionError</td></tr><tr><td>ResponseBanner</td></tr><tr><td>ResponseCapabilities</td></tr><tr><td>ResponseClearBreak</td></tr><tr><td>ResponseClearWatch</td></tr><tr><td>ResponseCompletion</td></tr><tr><td>ResponseContinue</td></tr><tr><td>ResponseException</td></tr><tr><td>ResponseExit</td></tr><tr><td>ResponseForkTo</td></tr><tr><td>ResponseLine</td></tr><tr><td>ResponseOK</td></tr><tr><td>ResponseRaw</td></tr><tr><td>ResponseStack</td></tr><tr><td>ResponseSyntax</td></tr><tr><td>ResponseThreadList</td></tr><tr><td>ResponseThreadSet</td></tr><tr><td>ResponseUTFinished</td></tr><tr><td>ResponseUTPrepared</td></tr><tr><td>ResponseUTStartTest</td></tr><tr><td>ResponseUTStopTest</td></tr><tr><td>ResponseUTTestErrored</td></tr><tr><td>ResponseUTTestFailed</td></tr><tr><td>ResponseUTTestFailedExpected</td></tr><tr><td>ResponseUTTestSkipped</td></tr><tr><td>ResponseUTTestSucceededUnexpected</td></tr><tr><td>ResponseVariable</td></tr><tr><td>ResponseVariables</td></tr><tr><td>ResponseWPConditionError</td></tr>
+<tr><td>CallTrace</td></tr><tr><td>DebugAddress</td></tr><tr><td>EOT</td></tr><tr><td>PassiveStartup</td></tr><tr><td>RequestBanner</td></tr><tr><td>RequestBreak</td></tr><tr><td>RequestBreakEnable</td></tr><tr><td>RequestBreakIgnore</td></tr><tr><td>RequestCallTrace</td></tr><tr><td>RequestCapabilities</td></tr><tr><td>RequestCompletion</td></tr><tr><td>RequestContinue</td></tr><tr><td>RequestCoverage</td></tr><tr><td>RequestEnv</td></tr><tr><td>RequestEval</td></tr><tr><td>RequestExec</td></tr><tr><td>RequestForkMode</td></tr><tr><td>RequestForkTo</td></tr><tr><td>RequestLoad</td></tr><tr><td>RequestOK</td></tr><tr><td>RequestProfile</td></tr><tr><td>RequestRun</td></tr><tr><td>RequestSetFilter</td></tr><tr><td>RequestShutdown</td></tr><tr><td>RequestStep</td></tr><tr><td>RequestStepOut</td></tr><tr><td>RequestStepOver</td></tr><tr><td>RequestStepQuit</td></tr><tr><td>RequestThreadList</td></tr><tr><td>RequestThreadSet</td></tr><tr><td>RequestUTPrepare</td></tr><tr><td>RequestUTRun</td></tr><tr><td>RequestUTStop</td></tr><tr><td>RequestVariable</td></tr><tr><td>RequestVariables</td></tr><tr><td>RequestWatch</td></tr><tr><td>RequestWatchEnable</td></tr><tr><td>RequestWatchIgnore</td></tr><tr><td>ResponseBPConditionError</td></tr><tr><td>ResponseBanner</td></tr><tr><td>ResponseCapabilities</td></tr><tr><td>ResponseClearBreak</td></tr><tr><td>ResponseClearWatch</td></tr><tr><td>ResponseCompletion</td></tr><tr><td>ResponseContinue</td></tr><tr><td>ResponseException</td></tr><tr><td>ResponseExit</td></tr><tr><td>ResponseForkTo</td></tr><tr><td>ResponseLine</td></tr><tr><td>ResponseOK</td></tr><tr><td>ResponseRaw</td></tr><tr><td>ResponseStack</td></tr><tr><td>ResponseSyntax</td></tr><tr><td>ResponseThreadList</td></tr><tr><td>ResponseThreadSet</td></tr><tr><td>ResponseUTFinished</td></tr><tr><td>ResponseUTPrepared</td></tr><tr><td>ResponseUTStartTest</td></tr><tr><td>ResponseUTStopTest</td></tr><tr><td>ResponseUTTestErrored</td></tr><tr><td>ResponseUTTestFailed</td></tr><tr><td>ResponseUTTestFailedExpected</td></tr><tr><td>ResponseUTTestSkipped</td></tr><tr><td>ResponseUTTestSucceededUnexpected</td></tr><tr><td>ResponseVariable</td></tr><tr><td>ResponseVariables</td></tr><tr><td>ResponseWPConditionError</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Debugger.CallTraceViewer.html	Thu Nov 01 18:48:50 2012 +0100
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
+'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
+<html><head>
+<title>eric5.Debugger.CallTraceViewer</title>
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Debugger.CallTraceViewer</h1>
+<p>
+Module implementing the Call Trace viewer widget.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#CallTraceViewer">CallTraceViewer</a></td>
+<td>Class implementing the Call Trace viewer widget.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="CallTraceViewer" ID="CallTraceViewer"></a>
+<h2>CallTraceViewer</h2>
+<p>
+    Class implementing the Call Trace viewer widget.
+</p><h3>Signals</h3>
+<dl>
+<dt>sourceFile(str, int)</dt>
+<dd>
+emitted to show the source of a call/return point
+</dd>
+</dl>
+<h3>Derived from</h3>
+QWidget, Ui_CallTraceViewer
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#CallTraceViewer.__init__">CallTraceViewer</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.__addCallTraceInfo">__addCallTraceInfo</a></td>
+<td>Private method to add an entry to the call trace viewer.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.__setCallTraceEnabled">__setCallTraceEnabled</a></td>
+<td>Private slot to set the call trace enabled status.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.clear">clear</a></td>
+<td>Public slot to clear the call trace info.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.isCallTraceEnabled">isCallTraceEnabled</a></td>
+<td>Public method to get the state of the call trace function.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.on_callTrace_itemDoubleClicked">on_callTrace_itemDoubleClicked</a></td>
+<td>Private slot to open the double clicked file in an editor.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.on_clearButton_clicked">on_clearButton_clicked</a></td>
+<td>Private slot to clear the call trace.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.on_resizeButton_clicked">on_resizeButton_clicked</a></td>
+<td>Private slot to resize the columns of the call trace to their contents.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.on_saveButton_clicked">on_saveButton_clicked</a></td>
+<td>Private slot to save the call trace info to a file.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.on_startTraceButton_clicked">on_startTraceButton_clicked</a></td>
+<td>Private slot to start call tracing.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.on_stopTraceButton_clicked">on_stopTraceButton_clicked</a></td>
+<td>Private slot to start call tracing.</td>
+</tr><tr>
+<td><a href="#CallTraceViewer.setProjectMode">setProjectMode</a></td>
+<td>Public slot to set the call trace viewer to project mode.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="CallTraceViewer.__init__" ID="CallTraceViewer.__init__"></a>
+<h4>CallTraceViewer (Constructor)</h4>
+<b>CallTraceViewer</b>(<i>debugServer, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>parent</i></dt>
+<dd>
+reference to the parent widget (QWidget)
+</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>)
+<p>
+        Private method to add an entry to the call trace viewer.
+</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)
+</dd>
+</dl><a NAME="CallTraceViewer.__setCallTraceEnabled" ID="CallTraceViewer.__setCallTraceEnabled"></a>
+<h4>CallTraceViewer.__setCallTraceEnabled</h4>
+<b>__setCallTraceEnabled</b>(<i>enabled</i>)
+<p>
+        Private slot to set the call trace enabled status.
+</p><dl>
+<dt><i>enabled</i></dt>
+<dd>
+flag indicating the new state (boolean)
+</dd>
+</dl><a NAME="CallTraceViewer.clear" ID="CallTraceViewer.clear"></a>
+<h4>CallTraceViewer.clear</h4>
+<b>clear</b>(<i></i>)
+<p>
+        Public slot to clear the call trace info.
+</p><a NAME="CallTraceViewer.isCallTraceEnabled" ID="CallTraceViewer.isCallTraceEnabled"></a>
+<h4>CallTraceViewer.isCallTraceEnabled</h4>
+<b>isCallTraceEnabled</b>(<i></i>)
+<p>
+        Public method to get the state of the call trace function.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the state of the call trace function (boolean)
+</dd>
+</dl><a NAME="CallTraceViewer.on_callTrace_itemDoubleClicked" ID="CallTraceViewer.on_callTrace_itemDoubleClicked"></a>
+<h4>CallTraceViewer.on_callTrace_itemDoubleClicked</h4>
+<b>on_callTrace_itemDoubleClicked</b>(<i>item, column</i>)
+<p>
+        Private slot to open the double clicked file in an editor.
+</p><dl>
+<dt><i>item</i></dt>
+<dd>
+reference to the double clicked item (QTreeWidgetItem)
+</dd><dt><i>column</i></dt>
+<dd>
+column that was double clicked (integer)
+</dd>
+</dl><a NAME="CallTraceViewer.on_clearButton_clicked" ID="CallTraceViewer.on_clearButton_clicked"></a>
+<h4>CallTraceViewer.on_clearButton_clicked</h4>
+<b>on_clearButton_clicked</b>(<i></i>)
+<p>
+        Private slot to clear the call trace.
+</p><a NAME="CallTraceViewer.on_resizeButton_clicked" ID="CallTraceViewer.on_resizeButton_clicked"></a>
+<h4>CallTraceViewer.on_resizeButton_clicked</h4>
+<b>on_resizeButton_clicked</b>(<i></i>)
+<p>
+        Private slot to resize the columns of the call trace to their contents.
+</p><a NAME="CallTraceViewer.on_saveButton_clicked" ID="CallTraceViewer.on_saveButton_clicked"></a>
+<h4>CallTraceViewer.on_saveButton_clicked</h4>
+<b>on_saveButton_clicked</b>(<i></i>)
+<p>
+        Private slot to save the call trace info to a file.
+</p><a NAME="CallTraceViewer.on_startTraceButton_clicked" ID="CallTraceViewer.on_startTraceButton_clicked"></a>
+<h4>CallTraceViewer.on_startTraceButton_clicked</h4>
+<b>on_startTraceButton_clicked</b>(<i></i>)
+<p>
+        Private slot to start call tracing.
+</p><a NAME="CallTraceViewer.on_stopTraceButton_clicked" ID="CallTraceViewer.on_stopTraceButton_clicked"></a>
+<h4>CallTraceViewer.on_stopTraceButton_clicked</h4>
+<b>on_stopTraceButton_clicked</b>(<i></i>)
+<p>
+        Private slot to start call tracing.
+</p><a NAME="CallTraceViewer.setProjectMode" ID="CallTraceViewer.setProjectMode"></a>
+<h4>CallTraceViewer.setProjectMode</h4>
+<b>setProjectMode</b>(<i>enabled</i>)
+<p>
+        Public slot to set the call trace viewer to project mode.
+</p><p>
+        In project mode the call trace info is shown with project relative
+        path names.
+</p><dl>
+<dt><i>enabled</i></dt>
+<dd>
+flag indicating to enable the project mode (boolean)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.Debugger.DebugProtocol.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.Debugger.DebugProtocol.html	Thu Nov 01 18:48:50 2012 +0100
@@ -26,7 +26,7 @@
 </p>
 <h3>Global Attributes</h3>
 <table>
-<tr><td>EOT</td></tr><tr><td>PassiveStartup</td></tr><tr><td>RequestBanner</td></tr><tr><td>RequestBreak</td></tr><tr><td>RequestBreakEnable</td></tr><tr><td>RequestBreakIgnore</td></tr><tr><td>RequestCapabilities</td></tr><tr><td>RequestCompletion</td></tr><tr><td>RequestContinue</td></tr><tr><td>RequestCoverage</td></tr><tr><td>RequestEnv</td></tr><tr><td>RequestEval</td></tr><tr><td>RequestExec</td></tr><tr><td>RequestForkMode</td></tr><tr><td>RequestForkTo</td></tr><tr><td>RequestLoad</td></tr><tr><td>RequestOK</td></tr><tr><td>RequestProfile</td></tr><tr><td>RequestRun</td></tr><tr><td>RequestSetFilter</td></tr><tr><td>RequestShutdown</td></tr><tr><td>RequestStep</td></tr><tr><td>RequestStepOut</td></tr><tr><td>RequestStepOver</td></tr><tr><td>RequestStepQuit</td></tr><tr><td>RequestThreadList</td></tr><tr><td>RequestThreadSet</td></tr><tr><td>RequestUTPrepare</td></tr><tr><td>RequestUTRun</td></tr><tr><td>RequestUTStop</td></tr><tr><td>RequestVariable</td></tr><tr><td>RequestVariables</td></tr><tr><td>RequestWatch</td></tr><tr><td>RequestWatchEnable</td></tr><tr><td>RequestWatchIgnore</td></tr><tr><td>ResponseBPConditionError</td></tr><tr><td>ResponseBanner</td></tr><tr><td>ResponseCapabilities</td></tr><tr><td>ResponseClearBreak</td></tr><tr><td>ResponseClearWatch</td></tr><tr><td>ResponseCompletion</td></tr><tr><td>ResponseContinue</td></tr><tr><td>ResponseException</td></tr><tr><td>ResponseExit</td></tr><tr><td>ResponseForkTo</td></tr><tr><td>ResponseLine</td></tr><tr><td>ResponseOK</td></tr><tr><td>ResponseRaw</td></tr><tr><td>ResponseStack</td></tr><tr><td>ResponseSyntax</td></tr><tr><td>ResponseThreadList</td></tr><tr><td>ResponseThreadSet</td></tr><tr><td>ResponseUTFinished</td></tr><tr><td>ResponseUTPrepared</td></tr><tr><td>ResponseUTStartTest</td></tr><tr><td>ResponseUTStopTest</td></tr><tr><td>ResponseUTTestErrored</td></tr><tr><td>ResponseUTTestFailed</td></tr><tr><td>ResponseUTTestFailedExpected</td></tr><tr><td>ResponseUTTestSkipped</td></tr><tr><td>ResponseUTTestSucceededUnexpected</td></tr><tr><td>ResponseVariable</td></tr><tr><td>ResponseVariables</td></tr><tr><td>ResponseWPConditionError</td></tr>
+<tr><td>CallTrace</td></tr><tr><td>EOT</td></tr><tr><td>PassiveStartup</td></tr><tr><td>RequestBanner</td></tr><tr><td>RequestBreak</td></tr><tr><td>RequestBreakEnable</td></tr><tr><td>RequestBreakIgnore</td></tr><tr><td>RequestCallTrace</td></tr><tr><td>RequestCapabilities</td></tr><tr><td>RequestCompletion</td></tr><tr><td>RequestContinue</td></tr><tr><td>RequestCoverage</td></tr><tr><td>RequestEnv</td></tr><tr><td>RequestEval</td></tr><tr><td>RequestExec</td></tr><tr><td>RequestForkMode</td></tr><tr><td>RequestForkTo</td></tr><tr><td>RequestLoad</td></tr><tr><td>RequestOK</td></tr><tr><td>RequestProfile</td></tr><tr><td>RequestRun</td></tr><tr><td>RequestSetFilter</td></tr><tr><td>RequestShutdown</td></tr><tr><td>RequestStep</td></tr><tr><td>RequestStepOut</td></tr><tr><td>RequestStepOver</td></tr><tr><td>RequestStepQuit</td></tr><tr><td>RequestThreadList</td></tr><tr><td>RequestThreadSet</td></tr><tr><td>RequestUTPrepare</td></tr><tr><td>RequestUTRun</td></tr><tr><td>RequestUTStop</td></tr><tr><td>RequestVariable</td></tr><tr><td>RequestVariables</td></tr><tr><td>RequestWatch</td></tr><tr><td>RequestWatchEnable</td></tr><tr><td>RequestWatchIgnore</td></tr><tr><td>ResponseBPConditionError</td></tr><tr><td>ResponseBanner</td></tr><tr><td>ResponseCapabilities</td></tr><tr><td>ResponseClearBreak</td></tr><tr><td>ResponseClearWatch</td></tr><tr><td>ResponseCompletion</td></tr><tr><td>ResponseContinue</td></tr><tr><td>ResponseException</td></tr><tr><td>ResponseExit</td></tr><tr><td>ResponseForkTo</td></tr><tr><td>ResponseLine</td></tr><tr><td>ResponseOK</td></tr><tr><td>ResponseRaw</td></tr><tr><td>ResponseStack</td></tr><tr><td>ResponseSyntax</td></tr><tr><td>ResponseThreadList</td></tr><tr><td>ResponseThreadSet</td></tr><tr><td>ResponseUTFinished</td></tr><tr><td>ResponseUTPrepared</td></tr><tr><td>ResponseUTStartTest</td></tr><tr><td>ResponseUTStopTest</td></tr><tr><td>ResponseUTTestErrored</td></tr><tr><td>ResponseUTTestFailed</td></tr><tr><td>ResponseUTTestFailedExpected</td></tr><tr><td>ResponseUTTestSkipped</td></tr><tr><td>ResponseUTTestSucceededUnexpected</td></tr><tr><td>ResponseVariable</td></tr><tr><td>ResponseVariables</td></tr><tr><td>ResponseWPConditionError</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
--- a/Documentation/Source/eric5.Debugger.DebugServer.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.Debugger.DebugServer.html	Thu Nov 01 18:48:50 2012 +0100
@@ -46,7 +46,10 @@
     Class implementing the debug server embedded within the IDE.
 </p><h3>Signals</h3>
 <dl>
-<dt>clientBanner(banner)</dt>
+<dt>callTraceInfo(isCall, fromFile, fromLine, fromFunction, toFile, toLine, toFunction)</dt>
+<dd>
+            emitted after the client reported the call trace data
+</dd><dt>clientBanner(banner)</dt>
 <dd>
 emitted after the client banner was received
 </dd><dt>clientBreakConditionError(fn, lineno)</dt>
@@ -403,6 +406,9 @@
 <td><a href="#DebugServer.remoteUTStop">remoteUTStop</a></td>
 <td>public method to stop a unittest run.</td>
 </tr><tr>
+<td><a href="#DebugServer.setCallTraceEnabled">setCallTraceEnabled</a></td>
+<td>Public method to set the call trace state.</td>
+</tr><tr>
 <td><a href="#DebugServer.shutdownServer">shutdownServer</a></td>
 <td>Public method to cleanly shut down.</td>
 </tr><tr>
@@ -412,6 +418,9 @@
 <td><a href="#DebugServer.signalClientBreakConditionError">signalClientBreakConditionError</a></td>
 <td>Public method to process the client breakpoint condition error info.</td>
 </tr><tr>
+<td><a href="#DebugServer.signalClientCallTrace">signalClientCallTrace</a></td>
+<td>Public method to process the client call trace data.</td>
+</tr><tr>
 <td><a href="#DebugServer.signalClientCapabilities">signalClientCapabilities</a></td>
 <td>Public method to process the client capabilities info.</td>
 </tr><tr>
@@ -1185,7 +1194,7 @@
 </dd>
 </dl><a NAME="DebugServer.remoteLoad" ID="DebugServer.remoteLoad"></a>
 <h4>DebugServer.remoteLoad</h4>
-<b>remoteLoad</b>(<i>fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType=""</i>)
+<b>remoteLoad</b>(<i>fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType="", enableCallTrace=False</i>)
 <p>
         Public method to load a new program to debug.
 </p><dl>
@@ -1229,6 +1238,10 @@
 </dd><dt><i>clientType=</i></dt>
 <dd>
 client type to be used (string)
+</dd><dt><i>enableCallTrace=</i></dt>
+<dd>
+flag indicating to enable the call trace
+            function (boolean)
 </dd>
 </dl><a NAME="DebugServer.remoteProfile" ID="DebugServer.remoteProfile"></a>
 <h4>DebugServer.remoteProfile</h4>
@@ -1404,7 +1417,17 @@
 <b>remoteUTStop</b>(<i></i>)
 <p>
         public method to stop a unittest run.
-</p><a NAME="DebugServer.shutdownServer" ID="DebugServer.shutdownServer"></a>
+</p><a NAME="DebugServer.setCallTraceEnabled" ID="DebugServer.setCallTraceEnabled"></a>
+<h4>DebugServer.setCallTraceEnabled</h4>
+<b>setCallTraceEnabled</b>(<i>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)
+</dd>
+</dl><a NAME="DebugServer.shutdownServer" ID="DebugServer.shutdownServer"></a>
 <h4>DebugServer.shutdownServer</h4>
 <b>shutdownServer</b>(<i></i>)
 <p>
@@ -1441,6 +1464,34 @@
 <dd>
 line umber of the breakpoint (integer)
 </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>)
+<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)
+</dd>
 </dl><a NAME="DebugServer.signalClientCapabilities" ID="DebugServer.signalClientCapabilities"></a>
 <h4>DebugServer.signalClientCapabilities</h4>
 <b>signalClientCapabilities</b>(<i>capabilities, clientType</i>)
--- a/Documentation/Source/eric5.Debugger.DebugViewer.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.Debugger.DebugViewer.html	Thu Nov 01 18:48:50 2012 +0100
@@ -28,6 +28,7 @@
 <ul>
   <li>variables viewer for global variables</li>
   <li>variables viewer for local variables</li>
+  <li>call trace viewer</li>
   <li>viewer for breakpoints</li>
   <li>viewer for watch expressions</li>
   <li>viewer for exceptions</li>
@@ -99,6 +100,9 @@
 <td><a href="#DebugViewer.__threadSelected">__threadSelected</a></td>
 <td>Private slot to handle the selection of a thread in the thread list.</td>
 </tr><tr>
+<td><a href="#DebugViewer.clearCallTrace">clearCallTrace</a></td>
+<td>Public method to clear the recorded call trace.</td>
+</tr><tr>
 <td><a href="#DebugViewer.currentWidget">currentWidget</a></td>
 <td>Public method to get a reference to the current widget.</td>
 </tr><tr>
@@ -114,6 +118,9 @@
 <td><a href="#DebugViewer.handleResetUI">handleResetUI</a></td>
 <td>Public method to reset the SBVviewer.</td>
 </tr><tr>
+<td><a href="#DebugViewer.isCallTraceEnabled">isCallTraceEnabled</a></td>
+<td>Public method to get the state of the call trace function.</td>
+</tr><tr>
 <td><a href="#DebugViewer.preferencesChanged">preferencesChanged</a></td>
 <td>Public slot to handle the preferencesChanged signal.</td>
 </tr><tr>
@@ -123,6 +130,9 @@
 <td><a href="#DebugViewer.saveCurrentPage">saveCurrentPage</a></td>
 <td>Public slot to save the current page.</td>
 </tr><tr>
+<td><a href="#DebugViewer.setCallTraceToProjectMode">setCallTraceToProjectMode</a></td>
+<td>Public slot to set the call trace viewer to project mode.</td>
+</tr><tr>
 <td><a href="#DebugViewer.setCurrentWidget">setCurrentWidget</a></td>
 <td>Public slot to set the current page based on the given widget.</td>
 </tr><tr>
@@ -217,7 +227,12 @@
 <dd>
 reference to the previous current item (QTreeWidgetItem)
 </dd>
-</dl><a NAME="DebugViewer.currentWidget" ID="DebugViewer.currentWidget"></a>
+</dl><a NAME="DebugViewer.clearCallTrace" ID="DebugViewer.clearCallTrace"></a>
+<h4>DebugViewer.clearCallTrace</h4>
+<b>clearCallTrace</b>(<i></i>)
+<p>
+        Public method to clear the recorded call trace.
+</p><a NAME="DebugViewer.currentWidget" ID="DebugViewer.currentWidget"></a>
 <h4>DebugViewer.currentWidget</h4>
 <b>currentWidget</b>(<i></i>)
 <p>
@@ -249,7 +264,17 @@
 <b>handleResetUI</b>(<i></i>)
 <p>
         Public method to reset the SBVviewer.
-</p><a NAME="DebugViewer.preferencesChanged" ID="DebugViewer.preferencesChanged"></a>
+</p><a NAME="DebugViewer.isCallTraceEnabled" ID="DebugViewer.isCallTraceEnabled"></a>
+<h4>DebugViewer.isCallTraceEnabled</h4>
+<b>isCallTraceEnabled</b>(<i></i>)
+<p>
+        Public method to get the state of the call trace function.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the state of the call trace function (boolean)
+</dd>
+</dl><a NAME="DebugViewer.preferencesChanged" ID="DebugViewer.preferencesChanged"></a>
 <h4>DebugViewer.preferencesChanged</h4>
 <b>preferencesChanged</b>(<i></i>)
 <p>
@@ -264,7 +289,20 @@
 <b>saveCurrentPage</b>(<i></i>)
 <p>
         Public slot to save the current page.
-</p><a NAME="DebugViewer.setCurrentWidget" ID="DebugViewer.setCurrentWidget"></a>
+</p><a NAME="DebugViewer.setCallTraceToProjectMode" ID="DebugViewer.setCallTraceToProjectMode"></a>
+<h4>DebugViewer.setCallTraceToProjectMode</h4>
+<b>setCallTraceToProjectMode</b>(<i>enabled</i>)
+<p>
+        Public slot to set the call trace viewer to project mode.
+</p><p>
+        In project mode the call trace info is shown with project relative
+        path names.
+</p><dl>
+<dt><i>enabled</i></dt>
+<dd>
+flag indicating to enable the project mode (boolean)
+</dd>
+</dl><a NAME="DebugViewer.setCurrentWidget" ID="DebugViewer.setCurrentWidget"></a>
 <h4>DebugViewer.setCurrentWidget</h4>
 <b>setCurrentWidget</b>(<i>widget</i>)
 <p>
--- a/Documentation/Source/eric5.Debugger.DebuggerInterfaceNone.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.Debugger.DebuggerInterfaceNone.html	Thu Nov 01 18:48:50 2012 +0100
@@ -169,6 +169,9 @@
 <td><a href="#DebuggerInterfaceNone.remoteWatchpointIgnore">remoteWatchpointIgnore</a></td>
 <td>Public method to ignore a watch expression the next couple of occurrences.</td>
 </tr><tr>
+<td><a href="#DebuggerInterfaceNone.setCallTraceEnabled">setCallTraceEnabled</a></td>
+<td>Public method to set the call trace state.</td>
+</tr><tr>
 <td><a href="#DebuggerInterfaceNone.shutdown">shutdown</a></td>
 <td>Public method to cleanly shut down.</td>
 </tr><tr>
@@ -628,6 +631,16 @@
 <dd>
 number of occurrences to ignore (int)
 </dd>
+</dl><a NAME="DebuggerInterfaceNone.setCallTraceEnabled" ID="DebuggerInterfaceNone.setCallTraceEnabled"></a>
+<h4>DebuggerInterfaceNone.setCallTraceEnabled</h4>
+<b>setCallTraceEnabled</b>(<i>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)
+</dd>
 </dl><a NAME="DebuggerInterfaceNone.shutdown" ID="DebuggerInterfaceNone.shutdown"></a>
 <h4>DebuggerInterfaceNone.shutdown</h4>
 <b>shutdown</b>(<i></i>)
--- a/Documentation/Source/eric5.Debugger.DebuggerInterfacePython.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.Debugger.DebuggerInterfacePython.html	Thu Nov 01 18:48:50 2012 +0100
@@ -187,6 +187,9 @@
 <td><a href="#DebuggerInterfacePython.remoteWatchpointIgnore">remoteWatchpointIgnore</a></td>
 <td>Public method to ignore a watch expression the next couple of occurrences.</td>
 </tr><tr>
+<td><a href="#DebuggerInterfacePython.setCallTraceEnabled">setCallTraceEnabled</a></td>
+<td>Public method to set the call trace state.</td>
+</tr><tr>
 <td><a href="#DebuggerInterfacePython.shutdown">shutdown</a></td>
 <td>Public method to cleanly shut down.</td>
 </tr><tr>
@@ -725,6 +728,16 @@
 <dd>
 number of occurrences to ignore (int)
 </dd>
+</dl><a NAME="DebuggerInterfacePython.setCallTraceEnabled" ID="DebuggerInterfacePython.setCallTraceEnabled"></a>
+<h4>DebuggerInterfacePython.setCallTraceEnabled</h4>
+<b>setCallTraceEnabled</b>(<i>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)
+</dd>
 </dl><a NAME="DebuggerInterfacePython.shutdown" ID="DebuggerInterfacePython.shutdown"></a>
 <h4>DebuggerInterfacePython.shutdown</h4>
 <b>shutdown</b>(<i></i>)
--- a/Documentation/Source/eric5.Debugger.DebuggerInterfacePython3.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.Debugger.DebuggerInterfacePython3.html	Thu Nov 01 18:48:50 2012 +0100
@@ -187,6 +187,9 @@
 <td><a href="#DebuggerInterfacePython3.remoteWatchpointIgnore">remoteWatchpointIgnore</a></td>
 <td>Public method to ignore a watch expression the next couple of occurrences.</td>
 </tr><tr>
+<td><a href="#DebuggerInterfacePython3.setCallTraceEnabled">setCallTraceEnabled</a></td>
+<td>Public method to set the call trace state.</td>
+</tr><tr>
 <td><a href="#DebuggerInterfacePython3.shutdown">shutdown</a></td>
 <td>Public method to cleanly shut down.</td>
 </tr><tr>
@@ -725,6 +728,16 @@
 <dd>
 number of occurrences to ignore (int)
 </dd>
+</dl><a NAME="DebuggerInterfacePython3.setCallTraceEnabled" ID="DebuggerInterfacePython3.setCallTraceEnabled"></a>
+<h4>DebuggerInterfacePython3.setCallTraceEnabled</h4>
+<b>setCallTraceEnabled</b>(<i>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)
+</dd>
 </dl><a NAME="DebuggerInterfacePython3.shutdown" ID="DebuggerInterfacePython3.shutdown"></a>
 <h4>DebuggerInterfacePython3.shutdown</h4>
 <b>shutdown</b>(<i></i>)
--- a/Documentation/Source/eric5.Debugger.DebuggerInterfaceRuby.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.Debugger.DebuggerInterfaceRuby.html	Thu Nov 01 18:48:50 2012 +0100
@@ -184,6 +184,9 @@
 <td><a href="#DebuggerInterfaceRuby.remoteWatchpointIgnore">remoteWatchpointIgnore</a></td>
 <td>Public method to ignore a watch expression the next couple of occurrences.</td>
 </tr><tr>
+<td><a href="#DebuggerInterfaceRuby.setCallTraceEnabled">setCallTraceEnabled</a></td>
+<td>Public method to set the call trace state.</td>
+</tr><tr>
 <td><a href="#DebuggerInterfaceRuby.shutdown">shutdown</a></td>
 <td>Public method to cleanly shut down.</td>
 </tr><tr>
@@ -719,6 +722,16 @@
 <dd>
 number of occurrences to ignore (int)
 </dd>
+</dl><a NAME="DebuggerInterfaceRuby.setCallTraceEnabled" ID="DebuggerInterfaceRuby.setCallTraceEnabled"></a>
+<h4>DebuggerInterfaceRuby.setCallTraceEnabled</h4>
+<b>setCallTraceEnabled</b>(<i>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)
+</dd>
 </dl><a NAME="DebuggerInterfaceRuby.shutdown" ID="DebuggerInterfaceRuby.shutdown"></a>
 <h4>DebuggerInterfaceRuby.shutdown</h4>
 <b>shutdown</b>(<i></i>)
--- a/Documentation/Source/eric5.Project.Project.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/eric5.Project.Project.html	Thu Nov 01 18:48:50 2012 +0100
@@ -408,6 +408,9 @@
 <td><a href="#Project.deleteLanguageFile">deleteLanguageFile</a></td>
 <td>Public slot to delete a translation from the project directory.</td>
 </tr><tr>
+<td><a href="#Project.getAbsolutePath">getAbsolutePath</a></td>
+<td>Public method to convert a project relative file path to an absolute file path.</td>
+</tr><tr>
 <td><a href="#Project.getAbsoluteUniversalPath">getAbsoluteUniversalPath</a></td>
 <td>Public method to convert a project relative file path with universal separators to an absolute file path.</td>
 </tr><tr>
@@ -1338,6 +1341,22 @@
 <dd>
 the translation file to be removed (string)
 </dd>
+</dl><a NAME="Project.getAbsolutePath" ID="Project.getAbsolutePath"></a>
+<h4>Project.getAbsolutePath</h4>
+<b>getAbsolutePath</b>(<i>fn</i>)
+<p>
+        Public method to convert a project relative file path to an absolute
+        file path.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+file or directory name to convert (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+absolute path (string)
+</dd>
 </dl><a NAME="Project.getAbsoluteUniversalPath" ID="Project.getAbsoluteUniversalPath"></a>
 <h4>Project.getAbsoluteUniversalPath</h4>
 <b>getAbsoluteUniversalPath</b>(<i>fn</i>)
--- a/Documentation/Source/index-eric5.Debugger.html	Thu Nov 01 18:35:44 2012 +0100
+++ b/Documentation/Source/index-eric5.Debugger.html	Thu Nov 01 18:48:50 2012 +0100
@@ -38,6 +38,9 @@
 <td><a href="eric5.Debugger.BreakPointViewer.html">BreakPointViewer</a></td>
 <td>Module implementing the Breakpoint viewer widget.</td>
 </tr><tr>
+<td><a href="eric5.Debugger.CallTraceViewer.html">CallTraceViewer</a></td>
+<td>Module implementing the Call Trace viewer widget.</td>
+</tr><tr>
 <td><a href="eric5.Debugger.Config.html">Config</a></td>
 <td>Module defining the different Python types and their display strings.</td>
 </tr><tr>
--- a/changelog	Thu Nov 01 18:35:44 2012 +0100
+++ b/changelog	Thu Nov 01 18:48:50 2012 +0100
@@ -2,6 +2,11 @@
 ----------
 Version 5.3-snapshot-2012mmdd:
 - bug fixes
+- Debugger
+  -- added the capability to trace function calls and returns to the
+     Python 2 and Python 3 debuggers
+- Debug Viewer
+  -- added a viewer for call trace logs
 
 Version 5.3-snapshot-20121101:
 - bug fixes

eric ide

mercurial