Thread overview
Visual D does not always break in function that threw.
Sep 28, 2017
Rainer Schuetze
September 27, 2017
It usually breaks at the calling site. The error message gives the correct module and line number but this is not the line number show in visual studio. The function does not show up in the call stack either making it difficult to debug. I'm referring to templated functions as it might not do it with normal functions.
September 27, 2017
On Wednesday, 27 September 2017 at 04:40:59 UTC, Psychological Cleanup wrote:
> It usually breaks at the calling site. The error message gives the correct module and line number but this is not the line number show in visual studio. The function does not show up in the call stack either making it difficult to debug. I'm referring to templated functions as it might not do it with normal functions.

Also, when in a C callback(using a D function), it seems that it confuses the debugger and no stack entry is shown nor are the autos or watches. The debugger just kinda goes blank now showing anything helpful like it should.

September 28, 2017

On 27.09.2017 09:19, Psychological Cleanup wrote:
> On Wednesday, 27 September 2017 at 04:40:59 UTC, Psychological Cleanup wrote:
>> It usually breaks at the calling site. The error message gives the correct module and line number but this is not the line number show in visual studio. The function does not show up in the call stack either making it difficult to debug. I'm referring to templated functions as it might not do it with normal functions.

This is usually caused by the druntime functions implementing the throw not being compiled with debug info and standard stack frames. That way the debugger doesn't know how to walk the stack.

You can work around this by compiling a "private" version of the D runtime by enabling "build and use local version of phobos with same compiler options" on the linker configuration page.

Sometimes it also helpful to load symbols of the Windows DLLs shown in the call stack (e.g. kernel32.dll or ntdll.dll) from the Microsoft symbol server.

> 
> Also, when in a C callback(using a D function), it seems that it confuses the debugger and no stack entry is shown nor are the autos or watches. The debugger just kinda goes blank now showing anything helpful like it should.
> 

Not sure about this one. Can you show an example?