Taunting
Robert Fraser
fraserofthenight at gmail.com
Mon Jun 1 00:17:21 PDT 2009
Ary Borenszweig wrote:
> Robert Fraser escribió:
>> Ary Borenszweig Wrote:
>>
>>> Ary Borenszweig escribió:
>>>> http://www.youtube.com/watch?v=rtYCFVPfx4M
>>> Bah... I just realized debugging that kind of things might be really
>>> hart to do. Imagine this:
>>>
>>> ---
>>> char[] something() {
>>> return "x *= 3; x += 4;";
>>> }
>>>
>>> mixin("int bla(int x) { x *= 2; " ~ something ~ " return 4; }");
>>>
>>> void main() {
>>> const something = bla(2);
>>> }
>>> ---
>>>
>>> Now I want to debug the invocation of bla: how the variable x is
>>> being modified. But there's no such place in the source code for that
>>> definition (well, there is, but it's split in pieces, and obviously
>>> you'll get lost when debugging).
>>>
>>> So I'm starting to think that the compile-time debugger should work
>>> on the (formatted) compile-time view of the modules. So you'll end up
>>> debugging code like this:
>>>
>>> ---
>>> char[] something() {
>>> return "x *= 3; x += 4;";
>>> }
>>>
>>> int bla(int x) {
>>> x *= 2;
>>> x *= 3;
>>> x += 4;
>>> return x;
>>> }
>>>
>>> void main() {
>>> const something = bla(2);
>>> }
>>> ---
>>>
>>> But that's way more hard to do than what I'm doing right now.
>>>
>>> Finally, you might want to have both worlds together, like:
>>>
>>> ---
>>> char[] someOtherFunc() {
>>> return "char[] x = \"whatever\";";
>>> }
>>>
>>> char[] someFunc() {
>>> mixin(someOtherFunc());
>>> return x;
>>> }
>>>
>>>
>>> mixin(someFunc());
>>> ---
>>>
>>> Now I want to debug someFunc(). But I also want to see that
>>> someOtherFunc() is expanded well, so I can't just show the
>>> compile-time view of the module, because doing this might have an
>>> error already (the error I want to debug, for example!). (and also
>>> the compile-time view dependens on the function I'm trying to debug)
>>>
>>> Aaah... I give up.
>>>
>>> (I came to this conclusion when trying to debug the scrappes:units
>>> project).
>>
>> NO! Don't give up! I've already started using it, and it's very useful
>> even if it can't debug compile-time-generated code; that's only a very
>> small use case.
>
> Cool! :-)
>
> Well, I think I'll give up with string mixins for the moment.
>
> What did you debug? What did you find useful? What would you improve?
I debugged my CTFE code that generates string mixins (essentially a
compile-time parser for a limited domain-specific language). Worked like
a charm once I increased Eclipse's memory limits.
More information about the Digitalmars-d-announce
mailing list