
Hi all, I'm looking at extending my debugger for Haskell to GHC (currently only works for Hugs, which is a pity). I have a couple of questions about printing data structures from the GHC heap. Is there a way to compile the RTS so that the names of data constructors are retained? It looks like Printer.c has some hooks for printing data structures, is it feasible to make a primitive that allows Haskell code to call into this? I'm thinking in particular of calling something like printClosure() from Haskell code. Unfortunately my understanding of the rts and the layout of data structures is fading. Cheers, Bernie.

Is there a way to compile the RTS so that the names of data constructors are retained?
My memory from a long, long time ago is that we had a debugging mode which used libbfd to get symbol names and some GHC-demangling code to turn those back into names like the user typed in.
It looks like Printer.c has some hooks for printing data structures, is it feasible to make a primitive that allows Haskell code to call into this? I'm thinking in particular of calling something like printClosure() from Haskell code.
If it's a global symbol, you should be able to access it form the ffi. If you want to traverse data structures the way you can using the HugsInternals library, you might want to tweak the code a little to provide a similar semantics/ API. Basically, all you have to do is take the C code and split it into handy bits. -- Alastair Reid
participants (2)
-
Alastair David Reid
-
Bernard James POPE