digitalmars.D - automatic debugging / disabling D's built-in exeption handler
- Bill Baxter (23/23) Nov 05 2006 By following the instructions given, eg, here:
- Sean Kelly (4/33) Nov 05 2006 Try:
- Bill Baxter (9/47) Nov 05 2006 Doesn't quite work.
- Tom S (3/12) Nov 05 2006 You could try
- Bill Baxter (3/16) Nov 05 2006 Nope. Same deal.
- Carlos Santander (4/11) Nov 05 2006 Put it in a different module. Import it, but don't link it.
- Bill Baxter (3/14) Nov 05 2006 Devious. I like it. But it doesn't work.
- Carlos Santander (4/20) Nov 05 2006 What's the error message? AFAIK, it should work.
- Sean Kelly (5/54) Nov 05 2006 This is what I thought would work. That or "extern (C) extern bool ..."...
- Tomas Lindquist Olsen (3/60) Nov 05 2006 Isn't this what we have 'export' for?
- Jascha Wetzel (4/33) Feb 26 2007 this is dealt with by Ddbg 0.0.3 now, btw ;)
By following the instructions given, eg, here: 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
Nov 05 2006
Bill Baxter wrote:By following the instructions given, eg, here: 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? --bbTry: extern (C) bool no_catch_exceptions; no_catch_exceptions = true;
Nov 05 2006
Sean Kelly 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"By following the instructions given, eg, here: 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? --bbTry: extern (C) bool no_catch_exceptions; no_catch_exceptions = true;
Nov 05 2006
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;
Nov 05 2006
Tom S wrote:Bill Baxter wrote:Nope. Same deal. --bbDoesn'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;
Nov 05 2006
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
Nov 05 2006
Carlos Santander wrote:Bill Baxter escribió:Devious. I like it. But it doesn't work. --bbIf 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.
Nov 05 2006
Bill Baxter escribió:Carlos Santander wrote:What's the error message? AFAIK, it should work. -- Carlos Santander BernalBill Baxter escribió:Devious. I like it. But it doesn't work. --bbIf 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.
Nov 05 2006
Bill Baxter wrote:Sean Kelly wrote: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. SeanBill 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"By following the instructions given, eg, here: 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? --bbTry: extern (C) bool no_catch_exceptions; no_catch_exceptions = true;
Nov 05 2006
Sean Kelly wrote:Bill Baxter wrote:Isn't this what we have 'export' for? export extern(C) bool no_catch_exceptions;Sean Kelly wrote: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. SeanBill 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"By following the instructions given, eg, here: 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? --bbTry: extern (C) bool no_catch_exceptions; no_catch_exceptions = true;
Nov 05 2006
this is dealt with by Ddbg 0.0.3 now, btw ;) it only breaks on unhandled exceptions and lets you examine the full stacktrace with locations and parameter values. Bill Baxter wrote:By following the instructions given, eg, here: 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
Feb 26 2007