Thread overview | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
November 05, 2006 automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
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 |
November 05, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bill Baxter | 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;
|
November 05, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Sean Kelly | 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" |
November 05, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bill Baxter | Bill Baxter wrote:
> 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"
You could try
extern (C) extern bool no_catch_exceptions;
|
November 05, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bill Baxter | Bill Baxter escribió: > > 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" Put it in a different module. Import it, but don't link it. -- Carlos Santander Bernal |
November 05, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tom S | Tom S wrote:
> Bill Baxter wrote:
>> 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"
>
> You could try
> extern (C) extern bool no_catch_exceptions;
Nope. Same deal.
--bb
|
November 05, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Carlos Santander | Carlos Santander wrote:
> Bill Baxter escribió:
>>
>> 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"
>
> Put it in a different module. Import it, but don't link it.
>
Devious. I like it. But it doesn't work.
--bb
|
November 06, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bill Baxter | Bill Baxter escribió: > Carlos Santander wrote: >> Bill Baxter escribió: >>> >>> 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" >> >> Put it in a different module. Import it, but don't link it. >> > > Devious. I like it. But it doesn't work. > > --bb What's the error message? AFAIK, it should work. -- Carlos Santander Bernal |
November 06, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bill Baxter | 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
|
November 06, 2006 Re: automatic debugging / disabling D's built-in exeption handler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Sean Kelly | 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;
|
Copyright © 1999-2021 by the D Language Foundation