Visual D 0.48-beta1

James Japherson JJ at goolooking.com
Wed Oct 10 23:04:44 UTC 2018


On Wednesday, 10 October 2018 at 07:21:29 UTC, James Japherson 
wrote:
> On Wednesday, 10 October 2018 at 06:37:33 UTC, Rainer Schuetze 
> wrote:
>>
>>
>> On 08/10/2018 19:55, Rainer Schuetze wrote:
>>> 
>>> 
>>> On 08/10/2018 17:16, James Japherson wrote:
>>>> Basically I'm having lots of problems with 0.48.
>>>>
>>>> 1. I get that one error about the stack constantly. Usually 
>>>> happens when I hit '.' but sometimes not.
>>> 
>>> I can reproduce with a combination of "static foreach" and 
>>> "tupleof", I hope we can find a solution.
>>> 
>>
>> Please try the new beta: 
>> https://github.com/dlang/visuald/releases/tag/v0.48.0-beta2
>
> Oh man! Almost! It worked for about 3 minutes! I thought I was 
> going to get somewhere! It got me with the stack frame bug.
>
> I'm having a bigger problem though, not sure I think this is 
> always been a problem with visual D.
>
> I can't see any outer variables in the debug windows. It seems 
> lambda's and inner functions and global scope is never shown 
> while in those scopes! This makes it very hard to debug them 
> because one can't see the outside variables. One has to make a 
> sort of local copy.
>
> e.g.,
>
> int x = 3; // Won't be seen while in foo
>
> void foo()
> {
>    // BP stopped here, can't see x in debug watches unless we 
> do the following:
>    int tmpx = x;
> }
>
>
> --
> Best I can tell is that the stack frame bug occurs much less. 
> Maybe 1/10th of the time(before it was every few seconds, now 
> it's every minute maybe(although it might get worse after it 
> gets worse).

Also, It seems that break points are not hit within meta code. If 
one uses static ifs much then one can't debug them. I realize 
that some of the code is compiled out, but that code can't create 
runtime bugs(because it was compiled out)..

So the remaining code from using the static code can still be 
compiled. Basically the compiler needs to keep track of static 
compile time code it optimizes out and sent that info to the 
debugger so it knows that there was suppose to be code there and 
where the actual run time code that was inside the static code 
went...

static if (...) // CT code, won't exist in binary but compiler 
can still emit it, basically pretending it exists as an if 
statement.
{
      int x = 43; // RT code, exists in the binary, should have a 
line number and BP cabable. We can put a BP on the static if and 
it should at least end here.
}


More information about the Digitalmars-d-ide mailing list