Dear Hongwei,

On Mon, May 27, 2019 at 11:33 PM Hongwei Xi <[email protected]> wrote:
> Yes, I think you can use the gline flag in that way.

It's great news for me.

> If your ATS2 program makes extensive use of templates, the traditional way of 
> debugging
> may not work very well. Unfortunately, I don't know a better way :(

Yes, templates make bad impact for break points.
Following means that there are 20 `#line` directives, but gdb only
found 10 of them.
Do you know how to find all of the multiple breakpoints?

```
$ gcc -E -DATS_MEMALLOC_LIBC -I
/home/kiwamu/src/ATS-Postiats/ccomp/runtime/ -I
/home/kiwamu/src/ATS-Postiats/ rbtree_dats.c > rbtree_dats_E.c
$ grep 235 rbtree_dats_E.c | wc -l
20
$ gcc -g rbtree_dats_E.c
$ gdb a.out
(gdb) b 235
Breakpoint 1 at 0x15ee: /home/kiwamu/tmp/ats/rbtree/rbtree.dats:235.
(10 locations)
```

Carefully reading C code generated by patsopt, there are 10 instances
for `rbtree_insert<T>`.
And one of them can break as following:

```
(gdb) b 
_057_home_057_kiwamu_057_tmp_057_ats_057_rbtree_057_rbtree_056_dats__rbtree_insert__2__1
Breakpoint 1 at 0x15ee: file /home/kiwamu/tmp/ats/rbtree/rbtree.dats, line 235.
(gdb) run
Starting program: /home/kiwamu/tmp/ats/rbtree/a.out

Breakpoint 1, 
_057_home_057_kiwamu_057_tmp_057_ats_057_rbtree_057_rbtree_056_dats__rbtree_insert__2__1
(arg0=0x0, arg1=0x7fffffffd4a4, arg2=0x0) at
/home/kiwamu/tmp/ats/rbtree/rbtree.dats:235
235     val t = ins (t, x0)
(gdb) bt
#0  
_057_home_057_kiwamu_057_tmp_057_ats_057_rbtree_057_rbtree_056_dats__rbtree_insert__2__1
(arg0=0x0, arg1=0x7fffffffd4a4, arg2=0x0) at
/home/kiwamu/tmp/ats/rbtree/rbtree.dats:235
#1  0x000055555555540b in mainats_0_void () at
/home/kiwamu/tmp/ats/rbtree/rbtree.dats:311
#2  0x000055555555940b in main (argc=1, argv=0x7fffffffd628,
envp=0x7fffffffd638) at /home/kiwamu/tmp/ats/rbtree/rbtree.dats:314
```

Do you have some pointer how to inject name mangling for breaking at
following template instances?

```
casper$ grep global: rbtree_dats.c | sort | uniq
global:
global: cmp$4777(1)(HSEfun(FUN; HSErefarg(1;
HSEs2exp(S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))),
HSErefarg(1; HSEs2exp(S2Eapp(S2Ecst(g0int_t0ype);
S2Eextkind(atstype_int)))); HSEapp(HSEcst(atstkind_t0ype);
HSEs2exp(S2Eextkind(atstype_int)))))
global: cmp$4777(1)(HSEfun(FUN; HSErefarg(1; HSEtyvar(a(8564))),
HSErefarg(1; HSEtyvar(a(8564))); HSEapp(HSEcst(atstkind_t0ype);
HSEs2exp(S2Eextkind(atstype_int)))))
global: compare$7$0(level=1)
global: compare$7$10(level=3)
global: compare$7$1(level=3)
global: compare$7$2(level=3)
global: compare$7$3(level=3)
global: compare$7$4(level=3)
global: compare$7$5(level=3)
global: compare$7$6(level=3)
global: compare$7$7(level=3)
global: compare$7$8(level=3)
global: compare$7$9(level=3)
global: eq_g1int_int$16$0(level=0)
global: eq_g1int_int$16$10(level=3)
global: eq_g1int_int$16$11(level=3)
global: eq_g1int_int$16$12(level=3)
global: eq_g1int_int$16$13(level=3)
global: eq_g1int_int$16$14(level=3)
global: eq_g1int_int$16$15(level=3)
global: eq_g1int_int$16$16(level=3)
global: eq_g1int_int$16$17(level=3)
global: eq_g1int_int$16$18(level=3)
global: eq_g1int_int$16$19(level=3)
global: eq_g1int_int$16$1(level=3)
global: eq_g1int_int$16$20(level=3)
global: eq_g1int_int$16$21(level=2)
global: eq_g1int_int$16$2(level=3)
global: eq_g1int_int$16$3(level=3)
global: eq_g1int_int$16$4(level=3)
global: eq_g1int_int$16$5(level=3)
global: eq_g1int_int$16$6(level=3)
global: eq_g1int_int$16$7(level=3)
global: eq_g1int_int$16$8(level=3)
global: eq_g1int_int$16$9(level=3)
global: fprint_val$109$0(level=0)
global: fprint_val$109$1(level=2)
global: gt_g0int_int$21$0(level=0)
global: gt_g0int_int$21$10(level=3)
global: gt_g0int_int$21$1(level=3)
global: gt_g0int_int$21$2(level=3)
global: gt_g0int_int$21$3(level=3)
global: gt_g0int_int$21$4(level=3)
global: gt_g0int_int$21$5(level=3)
global: gt_g0int_int$21$6(level=3)
global: gt_g0int_int$21$7(level=3)
global: gt_g0int_int$21$8(level=3)
global: gt_g0int_int$21$9(level=3)
global: ins_3$0(level=1)
global: ins_3$10(level=2)
global: ins_3$1(level=2)
global: ins_3$2(level=2)
global: ins_3$3(level=2)
global: ins_3$4(level=2)
global: ins_3$5(level=2)
global: ins_3$6(level=2)
global: ins_3$7(level=2)
global: ins_3$8(level=2)
global: ins_3$9(level=2)
global: insfix_l_0$0(level=0)
global: insfix_l_0$10(level=3)
global: insfix_l_0$1(level=3)
global: insfix_l_0$2(level=3)
global: insfix_l_0$3(level=3)
global: insfix_l_0$4(level=3)
global: insfix_l_0$5(level=3)
global: insfix_l_0$6(level=3)
global: insfix_l_0$7(level=3)
global: insfix_l_0$8(level=3)
global: insfix_l_0$9(level=3)
global: insfix_r_1$0(level=0)
global: insfix_r_1$10(level=3)
global: insfix_r_1$1(level=3)
global: insfix_r_1$2(level=3)
global: insfix_r_1$3(level=3)
global: insfix_r_1$4(level=3)
global: insfix_r_1$5(level=3)
global: insfix_r_1$6(level=3)
global: insfix_r_1$7(level=3)
global: insfix_r_1$8(level=3)
global: insfix_r_1$9(level=3)
global: lt_g0int_int$12$0(level=0)
global: lt_g0int_int$12$10(level=3)
global: lt_g0int_int$12$1(level=3)
global: lt_g0int_int$12$2(level=3)
global: lt_g0int_int$12$3(level=3)
global: lt_g0int_int$12$4(level=3)
global: lt_g0int_int$12$5(level=3)
global: lt_g0int_int$12$6(level=3)
global: lt_g0int_int$12$7(level=3)
global: lt_g0int_int$12$8(level=3)
global: lt_g0int_int$12$9(level=3)
global: mainats_0_void$6$0(level=0)
global: print_rbtree_5$0(level=0)
global: print_rbtree_5$1(level=1)
global: rbtree_free_4$0(level=0)
global: rbtree_free_4$1(level=1)
global: rbtree_insert$2$0(level=0)
global: rbtree_insert$2$10(level=1)
global: rbtree_insert$2$1(level=1)
global: rbtree_insert$2$2(level=1)
global: rbtree_insert$2$3(level=1)
global: rbtree_insert$2$4(level=1)
global: rbtree_insert$2$5(level=1)
global: rbtree_insert$2$6(level=1)
global: rbtree_insert$2$7(level=1)
global: rbtree_insert$2$8(level=1)
global: rbtree_insert$2$9(level=1)
```

Best regards,
-- 
Kiwamu Okabe at METASEPI DESIGN

-- 
You received this message because you are subscribed to the Google Groups 
"ats-lang-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/CAEvX6d%3DG1Gfyqxt2pusX-BTQ2A53Lbbx5c48kV4K%3DWEFqu3PHw%40mail.gmail.com.

Reply via email to