diff --git a/help/TDBHistoryExplorerHelp/structure.html b/help/TDBHistoryExplorerHelp/structure.html index 2f9502bb..3565a315 100644 --- a/help/TDBHistoryExplorerHelp/structure.html +++ b/help/TDBHistoryExplorerHelp/structure.html @@ -1 +1 @@ -Structure

A history explorer consts of three regions:



In the title bar, the explored object instance is revealed.

The control bar on top of the window contains a code pane for the current expression. You can enter any Smalltalk expression here whose changes over the recorded time you are interested in. When you accept it (Cmd + S), the expression is evaluated against all historic versions of the explored object instance (that is mapped to the receiver, self). You can also print it, inspect it, explore it, or debug it (experimental) the expression from here through the yellow button menu or the usual shortcuts.

Next to the code pane, you can find two buttons for managing the appearance of the history:

Spawn brings up the currently viewed history in another history explorer, where you can ask follow-up questions about the result.
The representation button in the corner lets you choose an alternative representation mode for the history. Currently supported representations are a list of values (default) and a details view that shows an expanded form of the current selection. The latter can be used for viewing longer printStrings, images, or formatted texts.

The contents pane below the control bar displays the history of the expression evaluated against the explored object instance.

On the right side, you can see all results of the expression for all recorded points in time if you have chosen the list representation in the control bar, or a single result if you are in details mode.

In the yellow-button menu of the list, you can inspect or explore a snapshot of the selection or debug the snapshot to observe how it was created. You can also choose debug here to open a new trace debugger on the selected context causing the selected change.

On the left side, you can find a reduced context tree that only contains all contexts that are responsible for any change of the explored expression. By default, this tree is displayed in a compact form. You can alternate the tree display from the yellow-button menu under compact labels. Fiddling around with these options is a great way to understand the tree display.

Note that each inner node in the tree can be collapsed or expanded and only shows a value from the slice on its own when it is collapsed. When you select an expanded node while in details mode, the details pane displays all values from all leaves within the selected node.



A note on fray outs: Even if the results of a query contains of multiple values, it is possible that the representation (e.g., the printString) of some values varies within the associated time range of the value. In this case, the history explorer will display a fray out error for the relevant items. In the details mode, all frayed out elements will be displayed on top of each other. See exampleDrawing for an example. \ No newline at end of file +Structure

A history explorer consts of three regions:



In the title bar, the explored object instance is revealed.

The control bar on top of the window contains a code pane for the current expression. You can enter any Smalltalk expression here whose changes over the recorded time you are interested in. When you accept it (Cmd + S), the expression is evaluated against all historic versions of the explored object instance (that is mapped to the receiver, self). You can also print it, inspect it, explore it, or debug it (experimental) the expression from here through the yellow button menu or the usual shortcuts.

Next to the code pane, you can find two buttons for managing the appearance of the history:

Spawn brings up the currently viewed history in another history explorer, where you can ask follow-up questions about the result.
The representation button in the corner lets you choose an alternative representation mode for the history. Currently supported representations are a list of values (default) and a details view that shows an expanded form of the current selection. The latter can be used for viewing longer printStrings, images, or formatted texts.

The contents pane below the control bar displays the history of the expression evaluated against the explored object instance.

On the right side, you can see all results of the expression for all recorded points in time if you have chosen the list representation in the control bar, or a single result if you are in details mode.

In the yellow-button menu of the list, you can inspect or explore a snapshot of the selection or debug the snapshot to observe how it was created. You can also choose debug here to open a new trace debugger on the selected context causing the selected change.

On the left side, you can find a reduced context tree that only contains all contexts that are responsible for any change of the explored expression. By default, this tree is displayed in a compact form. You can alternate the tree display from the yellow-button menu under compact labels. Fiddling around with these options is a great way to understand the tree display.

Note that each inner node in the tree can be collapsed or expanded and only shows a value from the slice on its own when it is collapsed. When you select an expanded node while in details mode, the details pane displays all values from all leaves within the selected node.



A note on fray outs: Even if the results of a query contains of multiple values, it is possible that the representation (e.g., the printString) of some values varies within the associated time range of the value. In this case, the history explorer will display a fray out error for the relevant items. In the details mode, all frayed out elements will be displayed on top of each other. See exampleDrawing for an example. \ No newline at end of file diff --git a/help/advancedNavigation.html b/help/advancedNavigation.html index fded2a19..9ebfb32a 100644 --- a/help/advancedNavigation.html +++ b/help/advancedNavigation.html @@ -1 +1 @@ -Advanced Navigation

Besides the basic navigation language, the context tree also supports some advanced operators.

Jumps bring you directly to the sender context or the current callee context of the selection. With jump to present, you can also return to the tail of the program trace.



With the spawn option, you can open a second trace debugger on the selected subtree of the trace. Both debuggers will operate on the same instance of the program trace, allowing you to view different contexts at the same time. You can also drag any context from the tree into the world to spawn another trace debugger.



By marking a context as border context, you can reduce the complexity of the tree and hide all senders of the context. You can also define multiple border contexts. As you as you step out of a border contexts, the remainder of the tree will be visible again. You can also press space on a context to toggle whether it is a border context.

\ No newline at end of file +Advanced Navigation

Besides the basic navigation language, the context tree also supports some advanced operators.

Jumps bring you directly to the sender context or the current callee context of the selection. With jump to present, you can also return to the tail of the program trace.



With the spawn option, you can open a second trace debugger on the selected subtree of the trace. Both debuggers will operate on the same instance of the program trace, allowing you to view different contexts at the same time. You can also drag any context from the tree into the world to spawn another trace debugger.



By marking a context as border context, you can reduce the complexity of the tree and hide all senders of the context. You can also define multiple border contexts. As you as you step out of a border contexts, the remainder of the tree will be visible again. You can also press space on a context to toggle whether it is a border context.

\ No newline at end of file diff --git a/help/findingContexts.html b/help/findingContexts.html index 589a17a2..72a39ac3 100644 --- a/help/findingContexts.html +++ b/help/findingContexts.html @@ -1 +1 @@ -Finding Contexts

Via the context tree menu, you can also search for contexts and quickly jump to them. To do so, select the context beneath which the search should start and choose "find context" or "find class" from the yellow button menu. You can also use cmd + f resp. cmd + g for this. From the dialog, select the desired pattern, i.e. the signature of the context or its method class, and accept.

With "find context again" (cmd + shift + f) resp. "find class again" (cmd + shift + g), you can jump to the next hit without specifying the search pattern again.

\ No newline at end of file +Finding Contexts

Via the context tree menu, you can also search for contexts and quickly jump to them. To do so, select the context beneath which the search should start and choose "find context" or "find class" from the yellow button menu. You can also use cmd + f resp. cmd + g for this. From the dialog, select the desired pattern, i.e. the signature of the context or its method class, and accept.

With "find context again" (cmd + shift + f) resp. "find class again" (cmd + shift + g), you can jump to the next hit without specifying the search pattern again.

\ No newline at end of file diff --git a/help/learnMore.html b/help/learnMore.html index bf4d5bd8..ff645654 100644 --- a/help/learnMore.html +++ b/help/learnMore.html @@ -1 +1 @@ -Learn more

To learn more about the project and further plans about the protoype, please visit the GitHub repository:

https://github.com/hpi-swa-lab/squeak-tracedebugger

In particular, there are many open issues for further ideas, bugs etc.:

https://github.com/hpi-swa-lab/squeak-tracedebugger/issues

To dive into the implementation details, in addition to the package overview on GitHub, some good starting points might be the class comments in TraceDebugger and TDBCursor.

If you have any feedback or ideas, please let me know and drop an issue! You can also do this directly via the window menu of the trace debugger. By the way, it is also possible from there to update your installed version or perform some special process-related operations. Last not least, you can also check out some experimental preferences from there.

\ No newline at end of file +Learn more

To learn more about the project and further plans about the protoype, please visit the GitHub repository:

https://github.com/hpi-swa-lab/squeak-tracedebugger

In particular, there are many open issues for further ideas, bugs etc.:

https://github.com/hpi-swa-lab/squeak-tracedebugger/issues

To dive into the implementation details, in addition to the package overview on GitHub, some good starting points might be the class comments in TraceDebugger and TDBCursor.

If you have any feedback or ideas, please let me know and drop an issue! You can also do this directly via the window menu of the trace debugger. By the way, it is also possible from there to update your installed version or perform some special process-related operations. Last not least, you can also check out some experimental preferences from there.

\ No newline at end of file diff --git a/help/structure.html b/help/structure.html index 6e104492..afe4e055 100644 --- a/help/structure.html +++ b/help/structure.html @@ -1 +1 @@ -Structure of the TraceDebugger

The user interface of the Trace Debugger is largely inspired by Squeak's default debugger, so we will only describe the differences here:



In the title of the window, you can see the current time index. This is the point in time of the trace where the program has halted. As you step through the trace, this index will update.

On the top of the window, you can see the context tree. This tree displays all methods that are active or have been activated at an early point in the program trace. Red-click on any context to inspect its execution in the debugger. By hovering any context, you can also see a quick preview of its invocation. If you have enabled the "Balloon help in message lists" preference, you will also see a preview of the method source. By yellow-clicking on any context, you can also find many other commands which will be discussed in the following pages.



Below the context tree, there is the button bar which provides options to step through the program trace. If you have enabled the "Extra debugger buttons" preference, you will also find further buttons for browsing the code here.

The third view is the code pane which displays the source of the current activated method. The initial selection marks the expression that will executed next when you move forward the program.

The final view at the bottom is the inspectors which allow you to inspect the state of the receiver and the context interactively. Red-click any field to view its value, or yellow-click the field and choose inspect/explore to spawn a separate tool on the selected value. This tool displays a snapshot of the value that will not change when you continue the program.



You can also perform do-its and print-its in the inspector/explorer value panes. You can add a custom inspector field by typing and selecting an expression into the value pane, yellow-clicking it, and choosing "add as field":



As you continue stepping, the values in the inspector panes will be updated automatically. \ No newline at end of file +Structure of the TraceDebugger

The user interface of the Trace Debugger is largely inspired by Squeak's default debugger, so we will only describe the differences here:



In the title of the window, you can see the current time index. This is the point in time of the trace where the program has halted. As you step through the trace, this index will update.

On the top of the window, you can see the context tree. This tree displays all methods that are active or have been activated at an early point in the program trace. Red-click on any context to inspect its execution in the debugger. By hovering any context, you can also see a quick preview of its invocation. If you have enabled the "Balloon help in message lists" preference, you will also see a preview of the method source. By yellow-clicking on any context, you can also find many other commands which will be discussed in the following pages.



Below the context tree, there is the button bar which provides options to step through the program trace. If you have enabled the "Extra debugger buttons" preference, you will also find further buttons for browsing the code here.

The third view is the code pane which displays the source of the current activated method. The initial selection marks the expression that will executed next when you move forward the program.

The final view at the bottom is the inspectors which allow you to inspect the state of the receiver and the context interactively. Red-click any field to view its value, or yellow-click the field and choose inspect/explore to spawn a separate tool on the selected value. This tool displays a snapshot of the value that will not change when you continue the program.



You can also perform do-its and print-its in the inspector/explorer value panes. You can add a custom inspector field by typing and selecting an expression into the value pane, yellow-clicking it, and choosing "add as field":



As you continue stepping, the values in the inspector panes will be updated automatically. \ No newline at end of file diff --git a/screenshots/HistoryExplorer.png b/screenshots/HistoryExplorer.png index bbd350d8..4d8ad932 100644 Binary files a/screenshots/HistoryExplorer.png and b/screenshots/HistoryExplorer.png differ diff --git a/screenshots/TraceDebugger.png b/screenshots/TraceDebugger.png index b94d9403..efda3ebc 100644 Binary files a/screenshots/TraceDebugger.png and b/screenshots/TraceDebugger.png differ diff --git a/screenshots/exampleShutDown.png b/screenshots/exampleShutDown.png index c499928f..0c6d00ea 100644 Binary files a/screenshots/exampleShutDown.png and b/screenshots/exampleShutDown.png differ diff --git a/screenshots/historyExplorerCompactionMenu.png b/screenshots/historyExplorerCompactionMenu.png index fba58b6f..88a2db32 100644 Binary files a/screenshots/historyExplorerCompactionMenu.png and b/screenshots/historyExplorerCompactionMenu.png differ diff --git a/screenshots/historyExplorerSmall.png b/screenshots/historyExplorerSmall.png index 5241079f..4b53a9b1 100644 Binary files a/screenshots/historyExplorerSmall.png and b/screenshots/historyExplorerSmall.png differ