Files
mercury/tests/debugger/breakpoints.exp2
Zoltan Somogyi fbfb5385fa Print more specific errors when creating an mdb breakpoint fails.
trace/mercury_trace_spy.c:
    When giving a command such as

        mdb> break badfilename.m:42

    and the debugger has no information about any file named "badfilename.m",
    print an error message that says just that. If the file exists but the
    line number doesn't, say that. Previously, the error message didn't tell
    the user whether it was the filename or the line number that was in error.

trace/mercury_trace_tables.[ch]:
    Collect the information that mercury_trace_spy.c needs for its new task.

tests/debugger/breakpoints.{inp,exp,exp2}:
    Add a test of both kinds of bad breakpoint specification to this test case.
2014-10-24 02:04:14 +11:00

270 lines
11 KiB
Plaintext

E1: C1 CALL pred breakpoints.main/2-0 (cc_multi) breakpoints.m:24
mdb> echo on
Command echo enabled.
mdb> register --quiet
mdb> break data
Ambiguous procedure specification. The matches are:
0: func breakpoints.data/0-0 (det)
1: pred breakpoints.data/1-0 (det)
Which do you want to put a breakpoint on (0-1 or *)? *
0: + stop interface func breakpoints.data/0-0 (det)
1: + stop interface pred breakpoints.data/1-0 (det)
mdb> delete 1
1: E stop interface pred breakpoints.data/1-0 (det)
mdb> delete 0
0: E stop interface func breakpoints.data/0-0 (det)
mdb> break data
Ambiguous procedure specification. The matches are:
0: func breakpoints.data/0-0 (det)
1: pred breakpoints.data/1-0 (det)
Which do you want to put a breakpoint on (0-1 or *)? 1
0: + stop interface pred breakpoints.data/1-0 (det)
mdb> continue
E2: C2 CALL pred breakpoints.data/1-0 (det) breakpoints.m:58 (breakpoints.m:56)
mdb> disable 0
0: - stop interface pred breakpoints.data/1-0 (det)
mdb> break info
0: - stop interface pred breakpoints.data/1-0 (det)
mdb> break qperm
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
mdb> break safe
2: + stop interface pred breakpoints.safe/1-0 (semidet)
mdb> break -e qperm
3: + stop entry pred breakpoints.qperm/2-0 (nondet)
mdb> break -a qperm
4: + stop all pred breakpoints.qperm/2-0 (nondet)
mdb> break /
Ambiguous procedure specification. The matches are:
0: func breakpoints.//2-0 (det)
1: func breakpoints.print_list.//2-0 (det)
2: func dir.//2-0 (det)
3: func float.//2-0 (det)
4: func int.//2-0 (det)
5: func rational.//2-0 (det)
Which do you want to put a breakpoint on (0-5 or *)? 0
5: + stop interface func breakpoints.//2-0 (det)
mdb> break //2
Ambiguous procedure specification. The matches are:
0: func breakpoints.//2-0 (det)
1: func breakpoints.print_list.//2-0 (det)
2: func dir.//2-0 (det)
3: func float.//2-0 (det)
4: func int.//2-0 (det)
5: func rational.//2-0 (det)
Which do you want to put a breakpoint on (0-5 or *)? 0
6: + stop interface func breakpoints.//2-0 (det)
mdb> break breakpoints.print_list.-/2
7: + stop interface func breakpoints.print_list.-/2-0 (det)
mdb> break breakpoints.print_list.--0
8: + stop interface func breakpoints.print_list.-/2-0 (det)
mdb> break breakpoints__print_list__/-0
9: + stop interface func breakpoints.print_list.//2-0 (det)
mdb> break breakpoints__print_list__print_list
10: + stop interface pred breakpoints.print_list.print_list/3-0 (det)
mdb> break breakpoints.print_list.print_list/3
11: + stop interface pred breakpoints.print_list.print_list/3-0 (det)
mdb> break info
0: - stop interface pred breakpoints.data/1-0 (det)
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
2: + stop interface pred breakpoints.safe/1-0 (semidet)
3: + stop entry pred breakpoints.qperm/2-0 (nondet)
4: + stop all pred breakpoints.qperm/2-0 (nondet)
5: + stop interface func breakpoints.//2-0 (det)
6: + stop interface func breakpoints.//2-0 (det)
7: + stop interface func breakpoints.print_list.-/2-0 (det)
8: + stop interface func breakpoints.print_list.-/2-0 (det)
9: + stop interface func breakpoints.print_list.//2-0 (det)
10: + stop interface pred breakpoints.print_list.print_list/3-0 (det)
11: + stop interface pred breakpoints.print_list.print_list/3-0 (det)
mdb> delete 0
0: D stop interface pred breakpoints.data/1-0 (det)
mdb> break info
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
2: + stop interface pred breakpoints.safe/1-0 (semidet)
3: + stop entry pred breakpoints.qperm/2-0 (nondet)
4: + stop all pred breakpoints.qperm/2-0 (nondet)
5: + stop interface func breakpoints.//2-0 (det)
6: + stop interface func breakpoints.//2-0 (det)
7: + stop interface func breakpoints.print_list.-/2-0 (det)
8: + stop interface func breakpoints.print_list.-/2-0 (det)
9: + stop interface func breakpoints.print_list.//2-0 (det)
10: + stop interface pred breakpoints.print_list.print_list/3-0 (det)
11: + stop interface pred breakpoints.print_list.print_list/3-0 (det)
mdb> disable 3
3: - stop entry pred breakpoints.qperm/2-0 (nondet)
mdb> break nodiag
0: + stop interface pred breakpoints.nodiag/3-0 (semidet)
mdb> break_print -v -n -b1 HeadVar__1 HeadVar__2
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
HeadVar__1 (verbose, nowarn), HeadVar__2 (verbose, nowarn)
mdb> continue
E3: C3 CALL pred breakpoints.qperm/2-0 (nondet) breakpoints.m:64 (breakpoints.m:61)
HeadVar__1
[|]
1-1
2-[|]
1-2
2-[|]
1-3
2-[|]/2
mdb> break_print -b1 none
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
mdb> format_param -p depth 10
mdb> format_param -p size 20
mdb> break_print -p -n -b1 HeadVar__1 HeadVar__2
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
HeadVar__1 (pretty, nowarn), HeadVar__2 (pretty, nowarn)
mdb> continue
E4: C3 SWTC pred breakpoints.qperm/2-0 (nondet) s2-2; breakpoints.m:65
mdb> finish -N
E5: C4 CALL pred breakpoints.qperm/2-0 (nondet) breakpoints.m:64 (breakpoints.m:68)
HeadVar__1
[2, 3, 4, 5]
mdb> finish -n
E6: C4 EXIT pred breakpoints.qperm/2-0 (nondet) breakpoints.m:64 (breakpoints.m:68)
HeadVar__1
[2, 3, 4, 5]
HeadVar__2
[2, 3, 4, 5]
mdb> break_print -b1 none
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
mdb> break_print -f -n -b1 HeadVar__1
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
HeadVar__1 (flat, nowarn)
mdb> break_print -f -e -n -b1 HeadVar__2
1: + stop interface pred breakpoints.qperm/2-0 (nondet)
HeadVar__1 (flat, nowarn), HeadVar__2 (flat, nowarn)
mdb> continue
E7: C3 EXIT pred breakpoints.qperm/2-0 (nondet) breakpoints.m:64 (breakpoints.m:61)
HeadVar__1 [1, 2, 3, 4, 5]
HeadVar__2 [1, 2, 3, 4, 5]
mdb> continue
E8: C5 CALL pred breakpoints.safe/1-0 (semidet) breakpoints.m:74 (breakpoints.m:62)
mdb> finish
E9: C6 CALL pred breakpoints.nodiag/3-0 (semidet) breakpoints.m:79 (breakpoints.m:76)
E10: C6 FAIL pred breakpoints.nodiag/3-0 (semidet) breakpoints.m:79 (breakpoints.m:76)
E11: C5 FAIL pred breakpoints.safe/1-0 (semidet) breakpoints.m:74 (breakpoints.m:62)
mdb> delete *
0: E stop interface pred breakpoints.nodiag/3-0 (semidet)
1: E stop interface pred breakpoints.qperm/2-0 (nondet)
2: E stop interface pred breakpoints.safe/1-0 (semidet)
3: D stop entry pred breakpoints.qperm/2-0 (nondet)
4: E stop all pred breakpoints.qperm/2-0 (nondet)
5: E stop interface func breakpoints.//2-0 (det)
6: E stop interface func breakpoints.//2-0 (det)
7: E stop interface func breakpoints.print_list.-/2-0 (det)
8: E stop interface func breakpoints.print_list.-/2-0 (det)
9: E stop interface func breakpoints.print_list.//2-0 (det)
10: E stop interface pred breakpoints.print_list.print_list/3-0 (det)
11: E stop interface pred breakpoints.print_list.print_list/3-0 (det)
mdb> break info
There are no break points.
mdb> delete *
There are no break points.
mdb> break -i -I3 qperm
0: + stop interface pred breakpoints.qperm/2-0 (nondet)
(ignore next 3 interface events)
mdb> continue
E12: C7 REDO pred breakpoints.qperm/2-0 (nondet) breakpoints.m:64 (breakpoints.m:68)
mdb> print *
HeadVar__1 [4, 5]
mdb> ignore -E4 0
0: + stop interface pred breakpoints.qperm/2-0 (nondet)
(ignore next 4 call events)
mdb> continue
E13: C8 CALL pred breakpoints.qperm/2-0 (nondet) breakpoints.m:64 (breakpoints.m:68)
mdb> print *
HeadVar__1 []
mdb> delete *
0: E stop interface pred breakpoints.qperm/2-0 (nondet)
mdb> break -O test_in_both
Ambiguous procedure specification. The matches are:
0: pred breakpoints.test_in_both/2-0 (det)
1: pred breakpoints.print_list.test_in_both/2-0 (det)
mdb> break breakpoints.test_in_both
0: + stop interface pred breakpoints.test_in_both/2-0 (det)
mdb> break breakpoints.print_list.test_in_both
1: + stop interface pred breakpoints.print_list.test_in_both/2-0 (det)
mdb> delete *
0: E stop interface pred breakpoints.test_in_both/2-0 (det)
1: E stop interface pred breakpoints.print_list.test_in_both/2-0 (det)
mdb> break print_list.test_in_both
0: + stop interface pred breakpoints.print_list.test_in_both/2-0 (det)
mdb> break print_list.test_only_in_printlist
1: + stop interface pred breakpoints.print_list.test_only_in_printlist/2-0 (det)
mdb> delete *
0: E stop interface pred breakpoints.print_list.test_in_both/2-0 (det)
1: E stop interface pred breakpoints.print_list.test_only_in_printlist/2-0 (det)
mdb> break test_only_in_printlist
0: + stop interface pred breakpoints.print_list.test_only_in_printlist/2-0 (det)
mdb> delete *
0: E stop interface pred breakpoints.print_list.test_only_in_printlist/2-0 (det)
mdb> procedures testmod
Module name `testmod' is ambiguous.
The matches are:
breakpoints.a.testmod
breakpoints.b.testmod
mdb> procedures a
List of procedures in module `a'
func breakpoints.a.afunc/0-0 (det)
mdb> procedures a.testmod
List of procedures in module `a.testmod'
func breakpoints.a.testmod.test_in_a/0-0 (det)
func breakpoints.a.testmod.test_in_ab/0-0 (det)
mdb> break -O test_in_ab
Ambiguous procedure specification. The matches are:
0: func breakpoints.a.testmod.test_in_ab/0-0 (det)
1: func breakpoints.b.testmod.test_in_ab/0-0 (det)
mdb> break -O testmod.test_in_ab
Ambiguous procedure specification. The matches are:
0: func breakpoints.a.testmod.test_in_ab/0-0 (det)
1: func breakpoints.b.testmod.test_in_ab/0-0 (det)
mdb> break -O a.testmod.test_in_ab
0: + stop interface func breakpoints.a.testmod.test_in_ab/0-0 (det)
mdb> break -O b.testmod.test_in_ab
1: + stop interface func breakpoints.b.testmod.test_in_ab/0-0 (det)
mdb> delete *
0: E stop interface func breakpoints.a.testmod.test_in_ab/0-0 (det)
1: E stop interface func breakpoints.b.testmod.test_in_ab/0-0 (det)
mdb> break -O -p goal test_in_a
0: + stop interface func breakpoints.a.testmod.test_in_a/0-0 (det)
goal (flat)
mdb> break -O -P -p HeadVar__1 test_in_b
1: + print interface func breakpoints.b.testmod.test_in_b/0-0 (det)
HeadVar__1 (flat)
mdb> break info
0: + stop interface func breakpoints.a.testmod.test_in_a/0-0 (det)
goal (flat)
1: + print interface func breakpoints.b.testmod.test_in_b/0-0 (det)
HeadVar__1 (flat)
mdb> continue
[1, 3, 5, 2, 4]
E14: C9 CALL func breakpoints.a.testmod.test_in_a/0-0 (det) breakpoints.a.testmod.m:10 (breakpoints.m:27)
test_in_a = '_'
mdb> break_print -b0 none
0: + stop interface func breakpoints.a.testmod.test_in_a/0-0 (det)
mdb> break_print -b0 *
0: + stop interface func breakpoints.a.testmod.test_in_a/0-0 (det)
all (flat)
mdb> break nonexistent.m:1000
mdb: there is no debuggable source file named nonexistent.m.
mdb> break breakpoints.m:1000
mdb: there is no event at line 1000 in breakpoints.m.
mdb> continue
E15: C9 EXIT func breakpoints.a.testmod.test_in_a/0-0 (det) breakpoints.a.testmod.m:10 (breakpoints.m:27)
HeadVar__1 "a"
mdb> continue
"a"
E16: C10 CALL func breakpoints.b.testmod.test_in_b/0-0 (det) breakpoints.b.testmod.m:10 (breakpoints.m:29)
mdb: there is no variable named HeadVar__1.
E17: C10 EXIT func breakpoints.b.testmod.test_in_b/0-0 (det) breakpoints.b.testmod.m:10 (breakpoints.m:29)
HeadVar__1 "b"
"b"