Taunting
Ary Borenszweig
ary at esperanto.org.ar
Sat May 30 13:38:00 PDT 2009
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?
More information about the Digitalmars-d-announce
mailing list