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.
