From: Paul C. <pac...@gm...> - 2007-08-08 21:20:37
|
Hi all, I am not an expert in writing compilers or debuggers but I would like to propose a list of requirements for the GEC debugger. I have rated the requirements with a two graded priority scale indicated by the presence of a '*'. Any requirement marked with a '*' I consider lower priority. Of course, eventually I would like all requirements to be implemented! ;-) 1. Assumptions ------------------------ 1.1 GEC can be run with some debug flag enabling the compiled program to be run by the GEC debugger, 1.2 The GEC debugger has a nice name or acronym like "gedb" so that I don't have to write "GEC debugger" all the time! 2. General requirements -------------------------------------- 2,1 Command line debugger in gdb style. 2.2 Default execution mode is interactive. 2.3 Switch for telling which executable to load. 2.4* Switch for running in batch mode. When running in batch mode a file (or stdin) containing debugger commands is read and the debugger executes the commands in straight sequence as if they had been manually entered in interactive mode. 3. Debugger commands ------------------------------------- Commands are run by entering them on the gedb prompt. Commands that take arguments have the arguments enclosed in brackets '[' and ']'. Commands should have abbreviated short forms like 'r' for run etc. 3.1 Help. Print info on available commands. 3.2 Run. 3.3 Single step to next execution point. 3.4 Step over to next execution point in current feature. 3.5 Step out of current feature. 3.6 Show info on loaded executable (compile time, compile flags etc.). 3.7 Show stack. 3.8 Show Eiffel text [lines] of n lines surrounding current execution point. 3.9 Show locals. 3.10 Show object [id] (current object if id not given). 3.11 Quit. 3.12 Set breakpoint [class.feature name and line no]. If no class.feature name and line no is given, set breakpoint at current execution point. 3.13 Show breakpoints (together with unique breakpoint id:s). 3.14 Delete breakpoint [breakpoint id]. 3.15 Save breakpoints to file. 3.16 Load breakpoints from file. 3.17 Terminate execution. 3.18* Stop execution. Not a proper command, but some way to generate an interrupt and stop the current execution (at some execution point after which one can continue step debugging the program). 3.19* Edit local entity [name and value]. 3.20* Edit object [id] [attribute/once name, value]. (current object if no id) 3.21* Set conditional breakpoint [class.feature name and line no]. If no class.feature name and line no is given, set breakpoint at current execution point. A new prompt is displayed where the condition can be expressed. 3.22* Show object info [type/class]. Show number of objects of a given type (or class) together with other interesting info. If no type/class is given show summary stats for all objects in executed system. 3.23* Show GC info. Show number of objects that have been garbage collected and other exciting GC info. /Paul |