Yes, I think you can use the gline flag in that way. 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 :(
--Hongwei On Mon, May 27, 2019 at 7:43 AM Kiwamu Okabe <[email protected]> wrote: > Dear Hongwei, > > On Mon, May 27, 2019 at 7:18 PM Kiwamu Okabe <[email protected]> wrote: > > Fortunately, I found the following simple method, while learning Vala > language: > > > > https://gist.github.com/master-q/b8167531a5a0679b9a830ed12a75619f > --snip-- > <https://gist.github.com/master-q/b8167531a5a0679b9a830ed12a75619f--snip--> > > I'll try to write some patch to inject such `#line` code onto output of > patsopt. > > I think you have already implement it on `--gline` option. > May I use it to debug ELF file compiled by ATS2? > > ``` > $ cp > /home/kiwamu/src/ATS-Postiats/doc/BOOK/INT2PROGINATS/CODE/CHAP_DATAVTYPE/rbtree.dats > ./ > $ patsopt --gline -o rbtree_dats.c -d rbtree.dats > $ grep "^#line" rbtree_dats.c | wc -l > 1924 > $ gcc -g -DATS_MEMALLOC_LIBC -I > /home/kiwamu/src/ATS-Postiats/ccomp/runtime/ -I > /home/kiwamu/src/ATS-Postiats/ rbtree_dats.c > $ gdb a.out > (gdb) b 235 > Breakpoint 1 at 0x15ee: /home/kiwamu/tmp/ats/rbtree/rbtree.dats:235. > (10 locations) > (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=0x7fffffffd4e4, 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=0x7fffffffd4e4, 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=0x7fffffffd668, > envp=0x7fffffffd678) at /home/kiwamu/tmp/ats/rbtree/rbtree.dats:322 > (gdb) l > 230 end else (fold@{a}{..}{..}{0} (t); t) > 231 end // end of [cons] > 232 | ~nil () => cons{a}{..}{..}{0}(R, nil, x0, nil) > 233 ) (* end of [ins] *) > 234 // > 235 val t = ins (t, x0) > 236 // > 237 in > 238 // > 239 case+ t of @cons(c as R, _, _, _) => (c := B; fold@ (t); t) | _ > =>> t > ``` > > 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%3DWsYbbfvCj8DFzSqPSRDfu%2BeDxxO%2BMZ6wfJuahyz5YTA%40mail.gmail.com > . > -- 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/CAPPSPLriN%3D%3DqHsJDdWOYhJKR8D77sG8wNiqOxxr%2BaGbeuFE0sQ%40mail.gmail.com.
