Get used to it :) Unfortunately, DMD is not emitting the best
debug information. The program flow is correct, but the line
info is not, that's why the execution step will not be
triggered in the real location of the source code.
The simplest example is this:
import std.stdio;
void foo(int x)
{
if (x > 0) //step 1, correct
{
writeln("bigger"); //step 2, correct
}
else
{
writeln("lower"); //step 3, wrong
}
}
int main(string[] argv)
{
foo(20); //breakpoint with step in
return 0;
}
If you really want to confuse the debugger, write some asserts
or contracts here and there and your program will be impossible
to debug :)
So, do you have any information if there will be a fix to this?
It is really hard (at least for me) to work with a language which
doesn't feature a working debugger...