mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-08 15:52:26 +01:00
Author:admin
Date:2008-09-19T07:55:09.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@27 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Breakpoint commands]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|3631e866-0acd-005d-b1f5-f43377b6e27f]]
|
||||
Located in the '''debug''' menu and the '''project''' toolbar, these three commands allow to change the state of set [[Breakpoints: Introduction|breakpoints]] in the system.
|
||||
|
||||
Enable breakpoints ( [[Image:16x16--breakpoints-enable-icon]] ), disable breakpoints ( [[Image:16x16--breakpoints-disable-icon]] ) and remove breakpoints ( [[Image:breakpoints-delete-icon]] ) have all global and local actions. Left-clicking on them has a global action: all set breakpoints of the system will be respectively enabled, disabled, or discarded. However, it is also possible to [[Pick-and-drop mechanism|drop]] a feature or a class onto them, in which case only set breakpoints of the feature/class will be affected.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Breakpoint menu]]
|
||||
[[Property:weight|4]]
|
||||
[[Property:uuid|dd68a84b-9bb7-98d5-8aa3-7e16969086f1]]
|
||||
A condition breakpoint is a breakpoint in which debugger will stop if a certain condition is met. To set a conditional breakpoint use the [[Breakpoint editing|breakpoint menu]] and choose `Set conditional breakpoint':
|
||||
|
||||
[[Image:breakpoint-context-menu]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Breakpoints]]
|
||||
[[Property:weight|-14]]
|
||||
[[Property:uuid|6ed5890a-9b23-210a-5640-cee348d6e27e]]
|
||||
* [[Breakpoints: Introduction|Introduction]]
|
||||
* [[Breakpoint editing|Breakpoint menu]]
|
||||
* [[Image:16x16--breakpoints-enable-icon]] [[Image:16x16--breakpoints-disable-icon]] [[Image:breakpoints-delete-icon]] [[Breakpoint commands|Breakpoint commands]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Call stack tool: Interface]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|ff70f68f-31db-c5d1-4d68-7b0fc70b1dd7]]
|
||||
[[Image:call-stack-tool]]
|
||||
|
||||
The call stack tool gives information about the current call stack of a debugged application.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Information relative to a stack element]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|f78fca33-2e19-1021-70f4-fd262991da7a]]
|
||||
In addition to the [[Call stack tool: Interface|call stack tool]] that provides information concerning the call stack in its globality, some other debug tools give information concerning the [[Call stack tool: Interface|current call stack element]] .
|
||||
|
||||
In debug mode, the context tool is automatically switched to the feature tab in flat view, and displays the feature which corresponds to the current call stack element. In the left margin, a yellow arrow ( [[Image:bp-current-line-icon]] ) marks the execution line where the program is currently stopped, whereas a green arrow ( [[Image:bp-slot-other-frame-icon]] ) indicates the execution line that was attained in the feature in the current call stack element. Therefore, if a feature is recursive, and appears several times in the call stack, changing the current call stack element may cause green arrows to be displayed at different places in the same feature (if the different calls did not reach the same execution point). On the other hand, the yellow arrow can only appear at one place as long as the application is not started again.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Save call stack]]
|
||||
[[Property:weight|4]]
|
||||
[[Property:uuid|495a2601-8e25-0b48-f86a-6cccf7099c1e]]
|
||||
It is possible to copy the current call stack to the clipboard ( [[Image:general-copy-icon]] ) or to a text file ( [[Image:general-save-icon]] ). This may be useful to indicate to other people of a team where an error occurred. After the button is clicked, a dialog is popped up that prompts for a place where to save the [[Call stack tool: Interface|call stack]] (if the selected file already exists, it is overwritten).
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Supported exceptions]]
|
||||
[[Property:weight|3]]
|
||||
[[Property:uuid|f3b4498a-0772-32fb-041d-13428e258f52]]
|
||||
Here is a list of exceptions that may appear in the [[Call stack tool: Interface|call stack tool]] . When they are raised, a tag may be there to give more information, if necessary. All these exceptions are declared in <eiffel>EXCEPT_CONST</eiffel>.
|
||||
|
||||
'''Feature call on Void target''': An attempt was made to calla feature on an object that is Void. The tag indicates the name of the feature of the feature that could not be called. For instance if the code line is <eiffel>a.b.c</eiffel> and the tag is "c" then <eiffel>a.b</eiffel> was Void.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Debuggee's Object Storage]]
|
||||
[[Property:weight|-9]]
|
||||
[[Property:uuid|b26fb1b0-85ef-26b5-9b9d-6e3b8ad977c2]]
|
||||
This command can be accessed through the context menu, and from the objects tool, and watches tools thanks to the tool bar's button [ [[Image:execution-object-storage-icon]] ].
|
||||
|
||||
By Pick-and-Dropping a debuggee object onto the button [ [[Image:execution-object-storage-icon]] ], you raise the "save" dialog. Then you need to choose the target filename where we'll store the debuggee object.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Debugging limitations]]
|
||||
[[Property:weight|-2]]
|
||||
[[Property:uuid|4377d765-8664-ee0c-5d5b-e42fd7d172c3]]
|
||||
General limitations:
|
||||
* Watch expression: Agents are not supported (for instance "agent my_function" is not supported").
|
||||
* The debugger is still not very helpful when the execution is stopped inside an invariant.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Debugging preferences]]
|
||||
[[Property:weight|-4]]
|
||||
[[Property:uuid|05e820ff-917f-e41f-d921-990283ac886f]]
|
||||
Two main preferences are available for the debugger, in order to speed up the objects display :
|
||||
* Enable/disable the debug_output display (see [[Debug output|debug output]] )
|
||||
* Enable/disable the full generic type display (for instance see <eiffel>ARRAY [INTEGER] </eiffel>instead of only <eiffel>ARRAY</eiffel>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Debugging tips with the objects grid view]]
|
||||
[[Property:weight|-5]]
|
||||
[[Property:uuid|56b3c189-8fda-d78e-7e7c-c4cf4f786ff6]]
|
||||
General behavior
|
||||
* Double clicking on the grid's header separator will resize the corresponding column. If you hold the [SHIFT] key at the same time, it will resize according to the displayed cells.
|
||||
* Right clicking on the header's cell will popup a menu that enable or disable the auto resizing on the selected column. This can be useful to resize automatically the "name" column when inspecting an object value.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Exceptions handling tool]]
|
||||
[[Property:weight|-7]]
|
||||
[[Property:uuid|9a62611f-46ba-7d74-ba1c-989f6709074b]]
|
||||
This tool is used to precise whether the debugger stops or continues on specific exceptions.<br/>
|
||||
To show this tool, go to menu : '''Debug > Exception handling''' .<br/>
|
||||
Note: now that exception are object in Eiffel too, the mechanism is unified for classic and dotnet system using the Eiffel exception class names.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Execute one line at a time]]
|
||||
[[Property:weight|-9]]
|
||||
[[Property:uuid|7d4489b4-5f29-2b1c-af83-afc2b25c8f85]]
|
||||
If no application was already running, this command launches an application compiled in Work Bench mode and stops at its first line.
|
||||
|
||||
If an application was stopped, it attempts to execute the instruction located on the execution line where the application is stopped. If this execution line does not contain an instruction, the execution stops at the next execution line.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Execution commands]]
|
||||
[[Property:weight|-15]]
|
||||
[[Property:uuid|098e4d2b-18c5-6933-fe42-2d55e427f5fa]]
|
||||
* [[Eiffel Debugger Execution: Introduction|Introduction]]
|
||||
* [[Image:debug-run-icon]] [[Run and stop at breakpoints|Run and debug]]
|
||||
* [[Image:debug-run-icon]] [[Run with arguments|Run with arguments]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Pause an application]]
|
||||
[[Property:weight|-7]]
|
||||
[[Property:uuid|846b52cb-6654-23be-3576-cc175a6fbf04]]
|
||||
This command stops the execution of a running debugged application.
|
||||
|
||||
This gives access to dynamic information concerning the application, such as the current [[Callstack tool: Introduction|call stack]] and the [[Objects tool: Introduction|state of objects]] in the system.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Run and stop at breakpoints]]
|
||||
[[Property:weight|-15]]
|
||||
[[Property:uuid|16310d6f-9ab8-e27c-5802-059d8fc80914]]
|
||||
This command launches an application compiled in Work Bench mode. The application will stop as soon as a [[Breakpoints: Introduction|breakpoint]] is encountered, or when an exception occurs.
|
||||
|
||||
It is accessible through the '''project''' toolbar ( [[Image:debug-run-icon]] ) or through the '''debug''' menu.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Run with arguments]]
|
||||
[[Property:weight|-14]]
|
||||
[[Property:uuid|0c8c089c-f953-3337-87dc-09a0c8150c21]]
|
||||
While working on a project, you may want to launch it with one or more arguments.
|
||||
|
||||
There are two ways to specify arguments for a program from EiffelStudio:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Run a finalized executable]]
|
||||
[[Property:weight|-11]]
|
||||
[[Property:uuid|a69ab49a-2bd1-a405-837c-b3e629fa5394]]
|
||||
As opposed to other execution commands, this command launches an application compiled in finalized mode. This has the same effect as running the application in the EIFGENs/target_name/F_code directory from a console prompt.
|
||||
|
||||
No debugging is possible with this command, but it lets you test the real speed of your program without any overhead.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Run without breakpoints]]
|
||||
[[Property:weight|-12]]
|
||||
[[Property:uuid|1f619bce-a3c7-5984-d3e6-4c5dceabf53d]]
|
||||
This command launches an application compiled in Workbench mode. The application will not stop when a [[Breakpoints: Introduction|breakpoint]] is encountered. However, it stops when an exception occurs.
|
||||
|
||||
It is accessible through the '''project''' toolbar ( [[Image:debug-run-without-breakpoint-icon]] ) or through the '''debug''' menu.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Step into a feature]]
|
||||
[[Property:weight|-10]]
|
||||
[[Property:uuid|a141505a-cc5a-afe1-6f8c-8e216bd7a232]]
|
||||
If no application was already running, this command launches an application compiled in Work Bench mode and stops at its first line.
|
||||
|
||||
If an application was stopped, it attempts to enter the feature located on the execution line where the application is stopped. If this feature is an attribute, or another non debuggable feature, it simply executes the current execution line and stops at the next one.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Step out of a feature]]
|
||||
[[Property:weight|-8]]
|
||||
[[Property:uuid|4d3b068d-cbeb-be94-94c9-f73eb12b6c0e]]
|
||||
If no application was already running, this command launches an application compiled in Work Bench mode and stops at its first line.
|
||||
|
||||
If an application was stopped, it attempts to exit the feature where the application is stopped.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Stop a debugged application]]
|
||||
[[Property:weight|-6]]
|
||||
[[Property:uuid|648fdd76-c393-982d-5367-1e9b02669248]]
|
||||
This command kills the debugged application, if any. This stops the debugging session.
|
||||
|
||||
It is accessible through the '''project''' toolbar ( [[Image:debug-stop-icon]] ) or through the '''debug''' menu.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Execution record and replay]]
|
||||
[[Property:weight|-12]]
|
||||
[[Property:uuid|5184f354-f954-49e2-d38f-15214dcd3d6b]]
|
||||
* [[Introduction to execution record and replay|Introduction]]
|
||||
* [[Record execution|Execution recording]]
|
||||
* [[Replay (recorded) execution|Execution replaying]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Record execution]]
|
||||
[[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.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Replay (recorded) execution]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|13932252-4eca-7c71-d047-b0b011e50d60]]
|
||||
The replay functionality is graphically available on the Call stack tool, or though the "Execution" menu.
|
||||
|
||||
{{note|First, you must be sure execution recording is activated ([[Record execution|read how to record execution]] ).}}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Expression evaluation]]
|
||||
[[Property:weight|-10]]
|
||||
[[Property:uuid|e55442ac-7861-1995-d315-baeed6c49223]]
|
||||
* [[Expression evaluation: Introduction|Introduction]]
|
||||
* [[Evaluation tool or Watch tool|Evaluation tool (alias Watch tool)]]
|
||||
* [[New expression dialog|New expression dialog]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|New expression dialog]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|95a78497-434d-759f-fdce-f9025c891495]]
|
||||
Adding new expressions to the [[Evaluation tool or Watch tool|list of expressions]] that should be dynamically evaluated is performed via a dialog.
|
||||
|
||||
<center>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[[Property:title|EiffelStudio Debugger]]
|
||||
[[Property:link_title|Debugger]]
|
||||
[[Property:weight|-8]]
|
||||
[[Property:uuid|31c4857e-f19e-e9e3-b7db-d6c30515277f]]
|
||||
* [[Eiffel Debugger: Introduction|Introduction]]
|
||||
* [[Execution commands|Execution commands]]
|
||||
* [[Breakpoints|Breakpoint management]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Attribute symbols]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|6dfbde5d-3423-4f10-6569-30af2ba00dd1]]
|
||||
In both trees of the [[Objects tool: Introduction|object tool]] , objects are displayed. Two categories are made for each objects: its attributes (grouped under the `attributes' folder [[Image:feature-attribute-icon]] ) and its once routines (grouped under the `once routines' folder [[Image:feature-once-icon]] ).
|
||||
|
||||
All follow the following symbol scheme to describe the kind of each item:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Debug output]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|41544c3b-e1f1-53a5-ff63-e63224c32fa3]]
|
||||
In both grids of the [[Objects tool: Introduction|object tool]] , objects are displayed. For virtually all objects, it is possible to display a user-definable string value next to the object address.
|
||||
|
||||
To do so, inherit from the class <eiffel>DEBUG_OUTPUT</eiffel> in the classes that should let their objects display a string value, and implement the `debug_output' feature. At run-time, the debugger will automatically query the result of this feature on all objects that define it and display it in the object tool and the [[Expression evaluation|evaluation tool]] .
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Remove object command]]
|
||||
[[Property:weight|5]]
|
||||
[[Property:uuid|42b5ea32-ef9c-207f-7dbe-c871a4515db3]]
|
||||
Located in the [[Objects tool: Introduction|object tool]] toolbar, this command [[Image:general-delete-icon]] discards an object from the [[Objects tool: Introduction|object tools]] . All top-level objects can be removed, except the first one, which is the object relative to the [[Callstack tool: Introduction|current call stack element]] .
|
||||
|
||||
Left-clicking on this button removes the selected object from the [[Objects tool: Introduction|object tools]] , if possible. It is also possible to [[Pick-and-drop mechanism|drop]] an object onto the button to remove the object.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Set slice size command]]
|
||||
[[Property:weight|3]]
|
||||
[[Property:uuid|ce2469a3-cf00-554e-47bd-5e8b2fdbc783]]
|
||||
Located in the object tool toolbar, this command [[Image:debugger-set-sizes-icon]] changes the display size of special objects (i.e. objects whose class is [[ref:/libraries/base/reference/special_chart]] ).Since special objects may contain thousands of attributes, only the first fifty are displayed by default. If left-clicked, a dialog is popped up that sets the exploration indices of special objects that will be loaded in the future. <br/>
|
||||
This popup also shows the "Maximum displayed string size" in the grid ([[Objects tool: Introduction|objects tool]] , or the [[Expression evaluation|watch tools]] ).
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Stack overflow prevention]]
|
||||
[[Property:weight|-6]]
|
||||
[[Property:uuid|bd988599-a444-6090-c3c4-a5c7de20b294]]
|
||||
Accessible via the '''Debug/Overflow prevention...''' menu, this command makes it possible to detect stack overflows before they occur. Selecting it pops up a dialog that lets you decide at which call stack depth a warning should be issued.
|
||||
|
||||
[[Image:stack-overflow-dlg]]
|
||||
|
||||
Reference in New Issue
Block a user