VisualD's Proof Of Bigfoot!
Rainer Schuetze via Digitalmars-d-ide
digitalmars-d-ide at puremagic.com
Sat Jul 22 01:20:00 PDT 2017
On 21.07.2017 21:37, FoxyBrown wrote:
> Here is a visual to prove some of the bad behavior that visual D is
> having and turning me off from D. Since no one will believe that such
> problems could exist, I decided to get a video of the yeti up close and
> personal.
>
> The video should be self explanatory. These are not the only problems I
> have run in to with Visual D. I do not think my system is unique,
> windows 10 + Visual Studio 2017. Anyone that uses that combination
> should run in to these issues fairly quickly I'd imagine(I've had them
> on several other system combinations also).
>
> I have issues with the watch values not being correct. They also are
> reported before they "exist"(according to the line number. They should
> be hidden if the local line number < declaration line number of the
> variable).
>
> http://s000.tinyupload.com/index.php?file_id=89572735278741121549
Thanks for taking the time to create the videos and report these issues.
Most of these are not strictly Visual D problems, but caused by the
compiler emitting incomplete or bad debug information. I concur that
this doesn't really make a difference to a user, though.
1. bad line number info for if statements: I haven't yet seen something
similar to your case (I suspect writing the full if/then/else block into
a single line makes it worse). Instead, the debugger sometimes seems to
execute the then-statement when actually skipping it.
2. no debug info for ssp: this looks like
https://issues.dlang.org/show_bug.cgi?id=4014 which should be resolved
in git-master of dmd (new option -gf).
3. globals have to specified with their fully qualified names in the
watch window because the compiler does not emit symbol lookup
information (e.g. imports).
4. Intellisense: D is a quite complex language, which makes it not so
easy to provide good intellisense information (using the compiler as a
library is work in progress, but is unlikely to be usable in the near
future). Especially if inference (e.g. with "auto") is involved, it can
get pretty difficult.
5. foreach loops: with ranges, the compiler usually translates the loop
body into a delegate, which it calls during iteration. With incomplete
context information, this hides local variables of the outer functions.
See the call stack when stepping through the loop body.
6. compiler generated variables: the latest rc of Visual D (the mago
debug engine to be precise) allows to hide these variables (see
Tools->Options->Debugger->Mago).
7. some jump instructions are elided by the compiler even in debug
builds, which causes the bad behavior with "continue". I tried disabling
that optimization but Walter was against it. Maybe this should be
restricted to jumps with no or identical debug line information.
8. "go to definition on an alias": not sure about this one: do you mean
"Search Symbols"? This uses compiler generated information in JSON
files. For phobos symbols you might want to run "Build phobos browse info".
9. enum values: very old bug:
https://issues.dlang.org/show_bug.cgi?id=982. Not sure why it has been
assigned to D1, only.
More information about the Digitalmars-d-ide
mailing list