Files
mercury/tests/debugger/interpreter.exp
Zoltan Somogyi 8d42f3254b Fix the failure of debugger/interpreter in debug grades.
In debug grades, io.close_input is traced, so an mdb single-step command
stops there; in non-debug grades, io.close_input is not traced, so
single-step does not stop there. This was the cause of the difference
in output.

Make this cause irrelevant by changing the relevant mdb command in the input
from single-step to finish of the parent, which goes to the same event
in both debug and non-debug grades.
2022-04-30 01:54:25 +10:00

51 lines
2.0 KiB
Plaintext

E1: C1 CALL pred interpreter.main/2-0 (det) interpreter.m:47
mdb> echo on
Command echo enabled.
mdb> context none
Contexts will not be printed.
mdb> register --quiet
mdb> b consult_file
0: + stop interface pred interpreter.consult_file/5-0 (det)
mdb> c
Pure Prolog Interpreter.
E2: C2 CALL pred interpreter.consult_file/5-0 (det)
mdb> delete 0
0: E stop interface pred interpreter.consult_file/5-0 (det)
mdb> vars
1 File (arg 1)
2 Database0 (arg 2)
mdb> print *
File (arg 1) "interpreter.m"
Database0 (arg 2) []
mdb> b database_assert_clause
0: + stop interface pred interpreter.database_assert_clause/4-0 (det)
mdb> c
Consulting file `interpreter.m'...
E3: C3 CALL pred interpreter.database_assert_clause/4-0 (det)
mdb> delete 0
0: E stop interface pred interpreter.database_assert_clause/4-0 (det)
mdb> finish
E4: C3 EXIT pred interpreter.database_assert_clause/4-0 (det)
mdb> print *
VarSet (arg 1) varset(var_supply(0), empty, empty)
Term (arg 2) functor(atom(":-"), [functor(atom/1, [|]/2, context/2)], context("interpreter.m", 28))
Database (arg 3) []
HeadVar__4 [clause(varset(var_supply/1, empty, empty), functor(atom/1, [|]/2, context/2), functor(atom/1, [], context/2))]
mdb> finish -a
This command is a no-op from this port.
mdb> print *
VarSet (arg 1) varset(var_supply(0), empty, empty)
Term (arg 2) functor(atom(":-"), [functor(atom/1, [|]/2, context/2)], context("interpreter.m", 28))
Database (arg 3) []
HeadVar__4 [clause(varset(var_supply/1, empty, empty), functor(atom/1, [|]/2, context/2), functor(atom/1, [], context/2))]
mdb>
E5: C4 CALL pred interpreter.consult_until_eof/5-0 (det)
mdb> finish -n
E6: C4 EXIT pred interpreter.consult_until_eof/5-0 (det)
mdb>
E7: C5 EXIT pred interpreter.consult_until_eof/5-0 (det)
mdb> finish 1
E8: C2 EXIT pred interpreter.consult_file/5-0 (det)
mdb> continue
?-