automatic debugging / disabling D's built-in exeption handler
Tomas Lindquist Olsen
tomas at famolsen.dk
Sun Nov 5 21:47:53 PST 2006
Sean Kelly wrote:
> Bill Baxter wrote:
>> Sean Kelly wrote:
>>> Bill Baxter wrote:
>>>
>>>> By following the instructions given, eg, here:
>>>> http://www.codeproject.com/debug/windbg_part1.asp#_Toc64133667
>>>>
>>>> it should be possible to make the debugger pop up automatically for
>>>> programs that have exceptions.
>>>>
>>>> According to the article above:
>>>> "WinDbg will be launched if an application throws an exception while
>>>> not being debugged and does not handle the exception itself"
>>>>
>>>> Apparently D does some sort of top-level catch of such exceptions
>>>> right now, because sticking an "asm { int 3; }" in the code just
>>>> prints the message "Error: Win32 Exception" instead of launching the
>>>> debugger. Is there some way to disable that?
>>>>
>>>> --
>>>> Really what I was trying to do was see if I could get Visual Studio
>>>> to debug D code. Actually it sort of works. If you have a program
>>>> with a main loop, you can use visual studio's Tools->Debug
>>>> Processes... to attach to the running process. If you've built your
>>>> program with -g, you can see the stack trace and step through the
>>>> program normally, and even set breakpoints.
>>>>
>>>> But you can't examine variables. VisualStudio could tell that there
>>>> was a "this" pointer, and knew it was of type MyClass, but it
>>>> couldn't tell what was inside of 'this'. I wonder if there's a way
>>>> to make a Visual Studio plugin that would give you this ability?
>>>>
>>>> --bb
>>>
>>>
>>> Try:
>>>
>>> extern (C) bool no_catch_exceptions;
>>>
>>> no_catch_exceptions = true;
>>
>> Doesn't quite work.
>> --> : no identifier for declarator no_catch_exceptions
>>
>> If you stick the 'no_catch_exceptions=true' into main() or static
>> this() then phobos complains that the value changed:
>> --> "f:\usr\pkg\Dlang\dmd\bin\..\lib\phobos.lib(dmain2) Offset 1D89AH
>> Record Type 0091
>> Error 1: Previous Definition Different : _no_catch_exceptions
>> --- errorlevel 1"
>
> This is what I thought would work. That or "extern (C) extern bool ..."
> There has to be some variant that doesn't make DMD think you're
> actually declaring a new variable.
>
>
> Sean
Isn't this what we have 'export' for?
export extern(C) bool no_catch_exceptions;
More information about the Digitalmars-d
mailing list