mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-07 15:22:31 +01:00
Author:halw
Date:2009-01-19T00:44:00.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@165 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -2,33 +2,34 @@
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|1255beef-e115-b8ae-87f6-08e267fe3d8f]]
|
||||
For performance reason, the recording mechanism has a few parameters. For now there is no way to change them easily with the graphical debugger, however you can change those parameters by editing (and recompiling) <code>{RT_DBG_EXECUTION_PARAMETERS}.make</code>.
|
||||
* integer parameter: <code>{RT_DBG_EXECUTION_PARAMETERS}.maximum_record_count</code> (default: 1_000_000): <br/>
|
||||
the recording keeps only the last '''maximum_record_count''' object's records.
|
||||
* boolean parameter: <code>{RT_DBG_EXECUTION_PARAMETERS}.flatten_when_closing</code> (default: True): <br/>
|
||||
when leaving a feature, the recorder can flatten the associated record. This will save memory space, and optimize underlying mechanism. By default it is enabled (and recommanded).
|
||||
* boolean parameter: <code>{RT_DBG_EXECUTION_PARAMETERS}.keep_calls_records</code>(default: True): <br/>
|
||||
when flattening call records' values, keep the sub-call records (i.e: the execution calls history)?
|
||||
* boolean parameter: <code>{RT_DBG_EXECUTION_PARAMETERS}.recording_values</code>(default: True): <br/>
|
||||
during execution, record attribute and locals assignment?(if you just want to review the calls history, you can discard value recording to speed up the recording.)
|
||||
* integer parameter: <code>{RT_DBG_EXECUTION_PARAMETERS}.maximum_record_count</code> (default: 1_000_000): the recording keeps only the last '''maximum_record_count''' object's records.
|
||||
* boolean parameter: <code>{RT_DBG_EXECUTION_PARAMETERS}.flatten_when_closing</code> (default: True): when leaving a feature, the recorder can flatten the associated record. This will save memory space, and optimize underlying mechanism. By default it is enabled (and recommended).
|
||||
* boolean parameter: <code>{RT_DBG_EXECUTION_PARAMETERS}.keep_calls_records</code>(default: True): when flattening call records' values, keep the sub-call records (i.e: the execution calls history)
|
||||
* boolean parameter: <code>{RT_DBG_EXECUTION_PARAMETERS}.recording_values</code>(default: True): during execution, record attribute and locals assignment (if you just want to review the calls history, you can discard value recording to speed up the recording.)
|
||||
|
||||
{{warning|Since there is no way to restore local values when the execution left the related call stack frame, the recording discards the recorded local values.}}
|
||||
|
||||
|
||||
The recording functionality is graphically available on the Call stack tool, or though the "Execution" menu (former "Debug" menu).
|
||||
The recording functionality is graphically available on the Call stack tool, or though the "Execution" menu (formerly the "Debug" menu).
|
||||
|
||||
When you start debugging, at some point you decide to start recording, click on the "record" button:
|
||||
After you start debugging, if at some point you decide to start recording, click on the "record" button:
|
||||
|
||||
[[Image:exec-replay-00]]
|
||||
|
||||
<center> [[Image:exec-replay-00]] </center>
|
||||
|
||||
{{note|If you want to record from the beginning, just enable the recording before starting the debug session (the recording button is a toggle button)}}
|
||||
|
||||
{{tip|You can also use the "When hits.." actions of [[Breakpoint editing|breakpoints]] to start and stop the execution recording. This can be useful to record only the part you are interested in.}}
|
||||
|
||||
<center> [[Image:exec-replay-00-1]] </center>
|
||||
{{tip|You can also use the "When hits.." actions of [[Breakpoint editing|breakpoints]] to start and stop the execution recording. This can be useful to record only the part of an execution that you are interested in.}}
|
||||
|
||||
The execution is now recorded, whenever the application is stopped, you can decide to [[Replay (recorded) execution|replay]] the previously recorded execution. [[Replay (recorded) execution|Read how to replay execution]] .
|
||||
|
||||
{{warning|EiffelStudio provides this feature only on classic system, this is not yet supported on dotnet.}}
|
||||
[[Image:exec-replay-00-1]]
|
||||
|
||||
|
||||
The execution is now recorded. Whenever the application is stopped, you can decide to [[Replay (recorded) execution|replay]] the previously recorded execution. See: [[Replay (recorded) execution]] to learn how to replay an execution.
|
||||
|
||||
|
||||
{{note|EiffelStudio provides record and replay only in classic mode. So, it is not yet supported for .NET systems.}}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@ The replay functionality is graphically available on the Call stack tool, or tho
|
||||
|
||||
Now, whenever the application is stopped in the debugger, you can replay the recorded execution by clicking on the "Replay" button:
|
||||
|
||||
<center> [[Image:exec-replay-01]] </center>
|
||||
[[Image:exec-replay-01]]
|
||||
|
||||
Now we are in "execution replay" mode, as you can notice the "Replay" button is enabled, and there is a new commands bar with replay "Back", "Forth", "Previous", "Next", and "Go to". And on the right the number indicates the call stack depth, the breakable index, and the nested breakable index . <br/>
|
||||
Now we are in "execution replay" mode, as you can see by the fact that the "Replay" button is enabled. Also, another command bar is visible with replay "Back", "Forth", "Previous", "Next", and "Go to". On the right, the number indicates the call stack depth, the breakable index, and the nested breakable index . <br/>
|
||||
* '''Back''': means replay back to caller, i.e: down in the call stack.
|
||||
* '''Forth''': means replay to callee, i.e: up in the call stack.
|
||||
* '''Previous''': means replay to previous instruction (previous call in the same stack; i.e: similar to step previous) if possible.
|
||||
@@ -19,21 +19,21 @@ In the first column, you will find a tree structure, which show on the root leve
|
||||
The '''bold entries''' show the active call stacks (i,e: the current call stack when we stopped the debugger).<br/>
|
||||
The '''red arrow''' shows the replayed call stack level, and the call stack levels which can be replayed have a light blue background. <br/>
|
||||
|
||||
<center> [[Image:exec-replay-02]] </center>
|
||||
[[Image:exec-replay-02]]
|
||||
|
||||
If you expand a node, you will be able to browse the whole recorded execution history from this stack (if you expand the bottom node, the whole recorded execution history will be available).<br/>
|
||||
You can still select other call stack level as you do in normal debugging mode to inspect them, in this case the red arrow stick to the replayed call, and the green arrow show you the selected call stack level.
|
||||
|
||||
<center> [[Image:exec-replay-02-1]] </center>
|
||||
[[Image:exec-replay-02-1]]
|
||||
|
||||
Here we clicked on "Back" 3 times, you can now also replay "Forth" 3 times. When you execute a "Replay" operation, the debugger restores the related recorded values, and the various debugger tools are updated with tools values (including the watch tools)
|
||||
|
||||
<center> [[Image:exec-replay-03]] </center>
|
||||
[[Image:exec-replay-03]]
|
||||
|
||||
And then if you replay "previous" twice, you rewind the execution in the same call stack frame, you will notice the "blue" dot to show the replayed execution cursor.
|
||||
|
||||
|
||||
<center> [[Image:exec-replay-04]] </center>
|
||||
[[Image:exec-replay-04]]
|
||||
|
||||
{{note|When replaying, you will notice the debugging tools are synchronized and refresh. <br/>
|
||||
This means the objects tool, the watch tools, and the feature tool will display the replayed context (values, and replayed execution cursor). <br/>
|
||||
|
||||
@@ -1,11 +1,41 @@
|
||||
[[Property:title|Object tool]]
|
||||
[[Property:weight|-11]]
|
||||
[[Property:uuid|6b736424-1729-0b6f-6ddd-8240f9f8ffd6]]
|
||||
* [[Objects tool: Introduction|Introduction]]
|
||||
* [[Attribute symbols|Attribute symbols]]
|
||||
* [[Debug output|Debug output]]
|
||||
* [[Image:debugger-set-sizes-icon]] [[Set slice size command|Set slice size command]]
|
||||
* [[Image:general-delete-icon]] [[Remove object command|Remove object command]]
|
||||
[[Image:object-tool]]
|
||||
|
||||
The object tool is a debugging tool that displays extended dynamic information concerning one or several objects while debugging an application. This information includes the value of all their attributes, as well as the values of the once functions that have already been called.
|
||||
|
||||
By default it is composed of one grid, which gives information about the [[Call stack tool|current stack element]] . Namely, it provides the Current object value, the arguments' value of corresponding feature, the value of the local variables, as well as the value of the Result (if this feature is a function).
|
||||
|
||||
When an exception occurs (for instance, an assertion violation), the objects tool will also display the exception information:
|
||||
<center> [[Image:objects-tool-exception]] </center>
|
||||
|
||||
|
||||
'''Specific case for .NET system :''' when the system is stopped, the first item of the local view displays the module name for the feature where we are stopped.
|
||||
|
||||
All objects can be expanded to see the value of their attributes. They are also pickable, so that it is possible to drop them onto the '''objects tool''' , an [[Expression evaluation|expression evaluator tool]] (alias Watch tools), or an editor. <br/>
|
||||
It is also possible to use the [[Set slice size command|set slice size command]] with [[ref:/libraries/base/reference/special_chart]] objects or [[ref:/libraries/base/reference/native_array_chart]] (dotnet) objects.
|
||||
|
||||
|
||||
|
||||
'''The tool bar buttons:'''<br/>
|
||||
- the [[Remove object command|remove object command]] [[Image:general-delete-icon]] <br/>
|
||||
- the [[Set slice size command|set slice size command]] [[Image:debugger-set-sizes-icon]] .<br/>
|
||||
- the button [[Image:debugger-expand-info-icon]] can give an [[Object Viewer (also known as Expanded display)|expanded display]] of the string relative to an object, by dropping the object onto the button (or pressing Ctrl+E on the selected value). Use it if an object has a very long string representation or a string representation that contains carriage returns, for example.<br/>
|
||||
- the button [[Image:debugger-show-hex-value-icon]] switch the display of integer values between decimal and hexadecimal format.<br/>
|
||||
- and the button [[Image:execution-object-storage-icon]] controls the [[Debuggee's Object Storage|remote object storage]] .
|
||||
|
||||
'''Tips:'''<br/>
|
||||
The tool's layout can be customized to have 2 side-by-side "left" and "right" grids holding the various information. This can be done using the button ( [[Image:toolbar-dropdown-icon]] ) from the tool bar which open the objects tool menu and then select "Edit Layout".
|
||||
|
||||
<center> [[Image:object-tool-layout-editor]] </center>
|
||||
|
||||
{{note| By default, the object tool displays the full generating type for object, but this can be changed for speed concern in the [[Debugging preferences|preferences]] . The same way, through the [[Debugging preferences|preferences]] , the user can enable or disable the evaluation of the [[Debug output|Debug Output]] feature .}}
|
||||
|
||||
{{note|When a row has a pink background, this indicates the value is different from previous step }}
|
||||
|
||||
{{tip|You can use the [[Expression evaluation|expression evaluator tools]] (alias watch tools) to have the same features with even more functionalities}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user