Debugging CTFE

Ary Borenszweig ary at esperanto.org.ar
Tue Jun 17 17:18:26 PDT 2008


Jarrett Billingsley a écrit :
> "Matthias Walter" <Matthias.Walter at st.ovgu.de> wrote in message 
> news:g38na9$2gs7$1 at digitalmars.com...
>> Hello,
>>
>> I have written some compile time executable functions with D 1.0 which 
>> work in runtime but hang (and allocate memory without end) at 
>> compile-time. Is there a way to debug this further? Can one print stuff 
>> out? (Don't know if writefln works at compile-time, as I'm using Tango) 
>> Can I somehow get a stack trace of the functions called?
>>
> 
> No, no, and no.  CTFE support in the current frontend has some rather 
> unworkable disadvantages.  For one, it's terribly buggy.  You're better off 
> trying to convert it to templates in most cases.  For two, CTFE is 
> interpreting a garbage-collected language but is not itself 
> garbage-collected, meaning that memory-unconscious code evaluated at compile 
> time (i.e. a loop that appends data to the end of a string) will just leak 
> like hell and cause the compiler to easily use up several GB of memory. 
> That might be what's happening to your code.  Or it could be a bug in CTFE. 

After I finish making Descent support D2, I'll try to make templates and 
CTFE debuggable (i.e. you put a breakpoint, you right click on a 
template or a function and select "Debug at compile-time"). The 
advantage here is, it's java code, so the intepreted code does get 
garbage collected. ;-)

I don't think it's hard to do, all the information is available in the 
front-end for this. Of course, any help will be appreciated.


More information about the Digitalmars-d-learn mailing list