Descent with compile-time debug for testing
Ary Borenszweig
ary at esperanto.org.ar
Sun May 31 16:42:04 PDT 2009
Hi!
I just uploaded a new test version of Descent (0.5.6) with the new
compile-time debugging feature. I tested it with some functions and
templates and it seems to be working (but not with string mixins,) so I
wanted you to play with it a little and see what you think, what could
be improved or what is wrong, etc.
As always, you can update from Eclipse itself as described here:
http://www.dsource.org/projects/descent
And now a little explanation about how to get it working: right click on
the function call or template instance you want to debug at
compile-time, select Source -> Debug at Compile-Time, and that's it! The
debugger interface will appear and you can step-into/over/return, or
continue, place breakpoints (but not yet in external files, sorry,) and
also it will break on errors, and you'll have the full stack trace to
see what went wrong. :-)
(maybe I'll do a video about this later, for the curious)
Just note that if you do this:
---
int foo(int x) {
return x * 2;
}
void main() {
int x = foo(10);
}
---
if you try to debug "foo(10)", it will show the debugger interface, but
stepping into will end the debugging session. Why? Because in the
semantic analysis for that code, the call "foo(10)" isn't evaluated at
compile time (as Descent just sneaks into the normal semantic analysis
of the module.) For this you have to write:
void main() {
const x = foo(10);
}
and now "foo(10)" is evalauted at compile time, since it's return value
is assigned to a const value. ("const int" will also work.)
In the execution, you can see variables, analyze expressions (it
supports any kinf of expression, like writing "1 + 2*3" will print "7".)
This is only for D1, in D2 it will not work as expected.
Enjoy!
More information about the Digitalmars-d-announce
mailing list