[m-rev.] already reviewed: add debugger state to ssdb
oan at missioncriticalit.com
oan at missioncriticalit.com
Fri Oct 5 17:31:02 AEST 2007
On 5/10/2007, "Zoltan Somogyi" <zs at csse.unimelb.edu.au> wrote:
>On 05-Oct-2007, Olivier Annet <oan at missioncriticalit.com> wrote:
>> --- compiler/Mmakefile 3 Oct 2007 23:48:15 -0000 1.94
>> +++ compiler/Mmakefile 5 Oct 2007 04:10:30 -0000
>> @@ -13,7 +13,8 @@
>> # Override the settings in ../Mmake.workspace so that in debugging grades we
>> # do not include mer_mdbcomp.init twice in the list of files passed to mkinit.
>> #
>> -C2INITFLAGS = --trace-init-file $(BROWSER_DIR)/$(BROWSER_LIB_NAME).init
>> +C2INITFLAGS = --trace-init-file $(BROWSER_DIR)/$(BROWSER_LIB_NAME).init \
>> + --trace-init-file $(SSDB_DIR)/$(SSDB_LIB_NAME).init
>>
>> -include Mmake.compiler.params
>
>This is required only if you want to debug the compiler itself with ssdb.
>Is ssdb usable on the compiler already?
No, not yet.
>
>The place you *should* modify first is the lmc script, so you can try out
>ssdb on small programs.
>
>> +:- type debugger_state
>> + ---> state(
>> + event_number :: int, % Current event number
>> + csn :: int, % Call Sequence Number
>> + call_depth :: int, % Depth of the function
>> + stack :: stack % The shadow stack
>> + ).
>
>While it is conceptually nice to package these together, doing so will add
>overheads (the creation of a tuple, additional code to pick the field you want,
>etc). Your code already has such overheads. Have you thought about making
>each field a separate mutable?
I will think on it
>
>> handle_event(ProcId, Event) :-
>> - promise_impure (
>> - trace [io(!IO)] (
>> - io.write(Event, !IO),
>> - io.write_string(" ", !IO),
>> + impure get_event_num_inc(EventNum),
>> + impure update_depth(Event, PrintDepth),
>> +
>> + (
>> + Event = ssdb_call,
>> + impure get_csn_inc(_),
>> +
>> + semipure get_debugger_state(InitialState),
>> + S = elem(ProcId, InitialState),
>> + impure push(S)
>> + ;
>> + Event = ssdb_exit,
>> + impure pop(S)
>> + ;
>> + Event = ssdb_redo,
>> + error("ssdb_redo: not yet implemented")
>> + ;
>> + Event = ssdb_fail,
>> + error("ssdb_fail: not yet implemented")
>> + ),
>
>Please use standard indentation.
>
>> +:- impure pred invent_io(io::uo) is det.
>> +:- impure pred consume_io(io::di) is det.
>
>What are these for?
In the future release, the handle_event function will send back the Retry
value and the simple call :
trace[!IO]
(
body
)
do not accept the use of output variable in his body
>
>I concur with Julien's suggestions.
I changed my code as suggested by Julien. It will be visible in the next
release.
>
>Zoltan.
>--------------------------------------------------------------------------
>mercury-reviews mailing list
>Post messages to: mercury-reviews at csse.unimelb.edu.au
>Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
>Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
>--------------------------------------------------------------------------
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list