www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.debugger - Visual D does not always break in function that threw.

reply Psychological Cleanup <Help Saving.World> writes:
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.
Sep 26
parent reply Psychological Cleanup <Help Saving.World> writes:
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.
Sep 27
parent Rainer Schuetze <r.sagitario gmx.de> writes:
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?
Sep 28