mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 01:43:35 +00:00
like this:
mdb> stack
0 pred mutrec.q1/3-0 (det) (mutrec.m:133)
1 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
3 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
4 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
6 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
7 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
9 pred mutrec.test/2-0 (det) (mutrec.m:42)
10 pred mutrec.main/2-0 (det) (mutrec.m:33)
This implements a suggestion by Peter Wang from *April 2012*.
runtime/mercury_stack_trace.h:
Add a new field to the data structure that represents each line
in a stack trace. This field represents the string, if any,
that implements the boxes around the calls in the clique.
This will be two characters, a box character and a space,
e.g. for the call at level 6, it will be "└ ".
runtime/mercury_stack_trace.c:
Use the new capability to add boxes to calls in cliques,
and equal-length padding to the calls that are not in cliques
but which share stack traces with calls that are.
Initialize some variables closer to their first use.
Group some related statements together. Add some comments.
Delete some already-acted-upon TODOs.
tests/debugger/mutrec.exp:
tests/debugger/mutrec_higher_order.exp:
Expect the updated clique markers.
NEWS.md:
doc/user_guide.texi:
Document the change.
221 lines
10 KiB
Plaintext
221 lines
10 KiB
Plaintext
1: 1 1 CALL pred mutrec.main/2-0 (det) mutrec.m:25
|
|
mdb> echo on
|
|
Command echo enabled.
|
|
mdb> register --quiet
|
|
mdb> break p2
|
|
0: + stop interface pred mutrec.p2/3-0 (det)
|
|
mdb> continue
|
|
16: 6 6 CALL pred mutrec.p2/3-0 (det) mutrec.m:91 (mutrec.m:122)
|
|
mdb> stack
|
|
0 pred mutrec.p2/3-0 (det) (mutrec.m:91)
|
|
1 pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
2 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
4 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
5 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.p2/3-0 (det)
|
|
mdb> break p3
|
|
0: + stop interface pred mutrec.p3/3-0 (det)
|
|
mdb> continue
|
|
24: 8 8 CALL pred mutrec.p3/3-0 (det) mutrec.m:111 (mutrec.m:102)
|
|
mdb> stack
|
|
0 ┌ pred mutrec.p3/3-0 (det) (mutrec.m:111)
|
|
1 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
3 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
4 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
6 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
7 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> stack -a
|
|
0 pred mutrec.p3/3-0 (det) (mutrec.m:111)
|
|
1 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
3 pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
4 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
6 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
7 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.p3/3-0 (det)
|
|
mdb> break q1
|
|
0: + stop interface pred mutrec.q1/3-0 (det)
|
|
mdb> continue
|
|
35: 11 11 CALL pred mutrec.q1/3-0 (det) mutrec.m:133 (mutrec.m:106)
|
|
mdb> stack
|
|
0 pred mutrec.q1/3-0 (det) (mutrec.m:133)
|
|
1 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
3 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
4 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
6 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
7 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
9 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
10 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.q1/3-0 (det)
|
|
mdb> break q3
|
|
0: + stop interface pred mutrec.q3/3-0 (det)
|
|
mdb> continue
|
|
40: 12 12 CALL pred mutrec.q3/3-0 (det) mutrec.m:173 (mutrec.m:144)
|
|
mdb> stack
|
|
0 pred mutrec.q3/3-0 (det) (mutrec.m:173)
|
|
1 pred mutrec.q1/3-0 (det) (mutrec.m:144)
|
|
2 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
4 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
5 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
7 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
8 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
10 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
11 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.q3/3-0 (det)
|
|
mdb> break q2
|
|
0: + stop interface pred mutrec.q2/3-0 (det)
|
|
mdb> continue
|
|
45: 13 13 CALL pred mutrec.q2/3-0 (det) mutrec.m:153 (mutrec.m:184)
|
|
mdb> stack
|
|
0 pred mutrec.q2/3-0 (det) (mutrec.m:153)
|
|
1 pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
2 pred mutrec.q1/3-0 (det) (mutrec.m:144)
|
|
3 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
5 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
6 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
8 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
9 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
11 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
12 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.q2/3-0 (det)
|
|
mdb> break r0c
|
|
0: + stop interface pred mutrec.r0c/3-0 (det)
|
|
mdb> continue
|
|
69: 19 19 CALL pred mutrec.r0c/3-0 (det) mutrec.m:207 (mutrec.m:188)
|
|
mdb> stack
|
|
0 pred mutrec.r0c/3-0 (det) (mutrec.m:207)
|
|
1 ┌ 3* pred mutrec.q3/3-0 (det) (mutrec.m:188 and others)
|
|
4 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
5 │ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
6 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
7 └ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
8 pred mutrec.q1/3-0 (det) (mutrec.m:144)
|
|
9 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
11 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
12 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
14 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
15 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
17 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
18 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> stack -c 3
|
|
0 pred mutrec.r0c/3-0 (det) (mutrec.m:207)
|
|
1 ┌ 3* pred mutrec.q3/3-0 (det) (mutrec.m:188 and others)
|
|
4 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
5 ┆ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
<more stack frames in clique snipped>
|
|
8 pred mutrec.q1/3-0 (det) (mutrec.m:144)
|
|
9 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
11 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
12 ┆ pred mutrec.p2/3-0 (det) (mutrec.m:102)
|
|
<more stack frames in clique snipped>
|
|
15 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
17 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
18 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.r0c/3-0 (det)
|
|
mdb> break r2
|
|
0: + stop interface pred mutrec.r2/3-0 (det)
|
|
mdb> continue
|
|
78: 22 22 CALL pred mutrec.r2/3-0 (det) mutrec.m:233 (mutrec.m:222)
|
|
mdb> stack
|
|
0 pred mutrec.r2/3-0 (det) (mutrec.m:233)
|
|
1 2* pred mutrec.r1/3-0 (det) (mutrec.m:222 and others)
|
|
3 pred mutrec.r0c/3-0 (det) (mutrec.m:209)
|
|
4 ┌ 3* pred mutrec.q3/3-0 (det) (mutrec.m:188 and others)
|
|
7 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
8 │ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
9 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
10 └ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
11 pred mutrec.q1/3-0 (det) (mutrec.m:144)
|
|
12 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
14 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
15 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
17 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
18 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
20 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
21 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.r2/3-0 (det)
|
|
mdb> break r3
|
|
0: + stop interface pred mutrec.r3/3-0 (det)
|
|
mdb> continue
|
|
83: 23 23 CALL pred mutrec.r3/3-0 (det) mutrec.m:253 (mutrec.m:244)
|
|
mdb> stack
|
|
0 pred mutrec.r3/3-0 (det) (mutrec.m:253)
|
|
1 pred mutrec.r2/3-0 (det) (mutrec.m:244)
|
|
2 2* pred mutrec.r1/3-0 (det) (mutrec.m:222 and others)
|
|
4 pred mutrec.r0c/3-0 (det) (mutrec.m:209)
|
|
5 ┌ 3* pred mutrec.q3/3-0 (det) (mutrec.m:188 and others)
|
|
8 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
9 │ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
10 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
11 └ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
12 pred mutrec.q1/3-0 (det) (mutrec.m:144)
|
|
13 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
15 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
16 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
18 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
19 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
21 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
22 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.r3/3-0 (det)
|
|
mdb> break r2
|
|
0: + stop interface pred mutrec.r2/3-0 (det)
|
|
mdb> continue
|
|
91: 25 25 CALL pred mutrec.r2/3-0 (det) mutrec.m:233 (mutrec.m:264)
|
|
mdb> stack
|
|
0 ┌ pred mutrec.r2/3-0 (det) (mutrec.m:233)
|
|
1 │ 2* pred mutrec.r3/3-0 (det) (mutrec.m:264 and others)
|
|
3 └ pred mutrec.r2/3-0 (det) (mutrec.m:244)
|
|
4 2* pred mutrec.r1/3-0 (det) (mutrec.m:222 and others)
|
|
6 pred mutrec.r0c/3-0 (det) (mutrec.m:209)
|
|
7 ┌ 3* pred mutrec.q3/3-0 (det) (mutrec.m:188 and others)
|
|
10 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
11 │ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
12 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
13 └ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
14 pred mutrec.q1/3-0 (det) (mutrec.m:144)
|
|
15 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
17 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
18 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
20 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
21 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
23 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
24 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.r2/3-0 (det)
|
|
mdb> break s
|
|
0: + stop interface pred mutrec.s/3-0 (det)
|
|
mdb> continue
|
|
97: 27 27 CALL pred mutrec.s/3-0 (det) mutrec.m:275 (mutrec.m:248)
|
|
mdb> stack
|
|
0 pred mutrec.s/3-0 (det) (mutrec.m:275)
|
|
1 ┌ 2* pred mutrec.r2/3-0 (det) (mutrec.m:248 and others)
|
|
3 │ 2* pred mutrec.r3/3-0 (det) (mutrec.m:264 and others)
|
|
5 └ pred mutrec.r2/3-0 (det) (mutrec.m:244)
|
|
6 2* pred mutrec.r1/3-0 (det) (mutrec.m:222 and others)
|
|
8 pred mutrec.r0c/3-0 (det) (mutrec.m:209)
|
|
9 ┌ 3* pred mutrec.q3/3-0 (det) (mutrec.m:188 and others)
|
|
12 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
13 │ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
14 │ pred mutrec.q2/3-0 (det) (mutrec.m:164)
|
|
15 └ pred mutrec.q3/3-0 (det) (mutrec.m:184)
|
|
16 pred mutrec.q1/3-0 (det) (mutrec.m:144)
|
|
17 ┌ 2* pred mutrec.p2/3-0 (det) (mutrec.m:106 and others)
|
|
19 │ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
20 │ 2* pred mutrec.p2/3-0 (det) (mutrec.m:102 and others)
|
|
22 └ pred mutrec.p3/3-0 (det) (mutrec.m:122)
|
|
23 2* pred mutrec.p1/3-0 (det) (mutrec.m:82 and others)
|
|
25 pred mutrec.test/2-0 (det) (mutrec.m:42)
|
|
26 pred mutrec.main/2-0 (det) (mutrec.m:33)
|
|
mdb> delete *
|
|
0: E stop interface pred mutrec.s/3-0 (det)
|
|
mdb> continue
|
|
[p1, p1, p3, p2, p2, p3, p2, p2, q1, q3, q2, q3, q2, q3, q3, q3, r0c, r1, r1, r2, r3, r3, r2, r2, s, s]
|
|
[p1, p1, p3, p2, p2, p3, p2, p2, q1, q3, q2, q3, q2, q3, q3, q3, r0c, r1, r1, r1, r1, r1, r3, r3, s, s, s, s]
|