Re: [m-users.] Debugger, setting initial breakpoint not triggering

"Sean Charles (emacstheviking)" <[email protected]>
Newsgroups gmane.comp.lang.mercury.general
Message-ID <[email protected]>
I usually build with hlc.gc and opted for the first hlc flavour mentioning debug hence my erroneous choice.

I began reading here: https://www.mercurylang.org/information/doc-latest/mercury_user_guide/Debugging.html#Debugging

	Mercury supports two broad ways of preparing a program for debugging.
	The simpler way is to compile a program in a debugging grade, which you can do directly by specifying a grade that includes the word “debug” or “decldebug”

So I did just that. I listed the grades available and chose the one I thought was the choice for hlc. I had no idea and as it isn't documented I didn't realise it wasn't for public consumption!

When I run configure like this:

./configure --enable-hlc-low-level-debug-grades --disable-java-grade

I get:

the set of library grades to install will be
   hlc.gc
   hlc.gc.memprof
   hlc.gc.prof
   hlc.gc.tr
   hlc.gcd.ll_debug
   hlc.par.gc
   none.gc
   none.gc.debug.stseg
   none.gc.decldebug.stseg
   none.gc.prof
   none.gc.profdeep.stseg
   none.gc.tr.debug.stseg
   none.par.gc.stseg

Configuring to install 13 grades.
This will likely take 2 to 7 hours.


So according to the documentation then, what does --enable-hlc-low-level-debug-grades actually do for me if it isn't provding me with a debug grade for hlc?

  --enable-hlc-low-level-debug-grades
                          install a low-level debugging version of the high
                          level C grade


After some reading of the above page, and the compiler configure -h output I built with:

./configure --enable-hlc-low-level-debug-grades --disable-java-grade --enable-additional-libgrades=asm_fast.gc.debug,asm_fast.gc,asm_fast.gc.decldebug

   asm_fast.gc
   asm_fast.gc.debug
   asm_fast.gc.decldebug
   hlc.gc
   hlc.gc.memprof
   hlc.gc.prof
   hlc.gc.tr
   hlc.gcd.ll_debug
   hlc.par.gc
   none.gc
   none.gc.debug.stseg
   none.gc.decldebug.stseg
   none.gc.prof
   none.gc.profdeep.stseg
   none.gc.tr.debug.stseg
   none.par.gc.stseg

Sadly, this just ended up with:

mgnuc: For compilers other than GNU C, the only
mgnuc: base grade allowed is `none'
clang: error: unknown argument: '-fno-function-cse'
clang: warning: optimization flag '-fno-defer-pop' is not supported [-Wignored-optimization-argument]
clang: warning: optimization flag '-fno-gcse' is not supported [-Wignored-optimization-argument]
make[3]: *** [alloc.o] Error 1
make[2]: *** [submake] Error 2
To clean up from failed install, remove /Users/seancharles/Documents/code/mercury/mercury-srcdist-22.01.4/install_grade_dir.asm_fast.gc
make[1]: *** [install_grades] Error 1
make: *** [install] Error 2

After some playing around I came up with this configuration line:

./configure --enable-hlc-low-level-debug-grades --disable-java-grade --enable-additional-libgrades=none.gc,none.gc.debug

and then managed to select none.gc coupled with the --debug flag, resulting in a build that now triggers the expected operation of mdb:


Melbourne Mercury Debugger, mdb version 22.01.4.
Copyright 1998-2012 The University of Melbourne.
Copyright 2013-2022 The Mercury team.
mdb is free software; there is absolutely no warranty for mdb.
       1:      1  1 CALL pred felt.main/2-0 (det) felt.m:43
Registering debuggable procedures... done.
There are 162 debuggable modules, with a total of 13267 procedures.
 0: + stop  linenumber felt.m:44
 1: + stop  linenumber ast.m:87
mdb>


Many thanks once again Zoltan.

Sean




> On 13 Dec 2022, at 13:05, Zoltan Somogyi <[email protected]> wrote:
> 
> 
> 2022-12-13 23:55 GMT+11:00 "Sean Charles (emacstheviking)" <[email protected]>:
>> Asking for the list of grades I get:
>> 
>> ➜  f2 git:(ast-review) ✗ mmc  --output-stdlib-grades
>> hlc.gc
>> hlc.gc.memprof
>> hlc.gc.prof
>> hlc.gc.tr
>> hlc.gcd.ll_debug
>> hlc.par.gc
>> none.gc
>> none.gc.debug.stseg
>> none.gc.decldebug.stseg
>> none.gc.prof
>> none.gc.profdeep.stseg
>> none.gc.tr.debug.stseg
>> none.par.gc.stseg
> 
> I presume you specifically configured your install to include
> the hlc.gcd.ll_debug grade, since it is not enabled by default.
> 
>> My makefile uses hlc.gcd.ll_debug
> 
> Uses how?
> 
> Not that it matters, because *any* reference to ll_debug by you is a bug.
> 
> The ll_debug grade component is not supposed to be documented.
> It is *completely separate* from the debug grade component, and has
> nothing whatsoever to do with mdb. It is intended *only* to debug
> the compiler's low level code generator, and as such, it is not useful
> to anyone who is not an implementor of the Mercury system.
> 
> Note that something very similar is true for the gcd grade component,
> which is intended only to help debug the interactions between
> Mercury's usual garbage collector and the rest of the system.
> 
> Zoltan.

_______________________________________________
users mailing list
[email protected]
https://lists.mercurylang.org/listinfo/users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.