Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
c++ - DebugBreak()
I'm using windows.h 's DebugBreak() and it invariably takes me to a disassembly window. Also the IDE is acting up on me today, won't open files on me either from the menu File->Open or from double-clicking on the error line in the output window; and I see files in the Window menu that I closed earlier, but it seems to think they are still open... Tried closing and restarting the IDE, tried rebooting the machine twice. Something must have got corrupted with the project file, I suppose...? dan Jan 03 2004
"dan" <dan_member pathlink.com> wrote in message news:bt7g7i$1q5a$1 digitaldaemon.com...I'm using windows.h 's DebugBreak() and it invariably takes me to a Jan 03 2004
Uses inline and do an int 3 if you want it to stop in your code, rather than within the implementation of DebugBreak (which does an int 3) "dan" <dan_member pathlink.com> wrote in message news:bt7g7i$1q5a$1 digitaldaemon.com...I'm using windows.h 's DebugBreak() and it invariably takes me to a Jan 03 2004
In article <bt8e9c$42q$2 digitaldaemon.com>, Matthew says...Uses inline and do an int 3 if you want it to stop in your code, rather than within the implementation of DebugBreak (which does an int 3) Jan 04 2004
In article <bt8e9c$42q$2 digitaldaemon.com>, Matthew says...Uses inline and do an int 3 if you want it to stop in your code, rather Jan 04 2004
//file: verify.hpp #ifndef VERIFY_HPP #define VERIFY_HPP #ifdef _DEBUG # define verify(x) do{ if( !((x)) ) asm int 3; }while(0) #else # define verify(x) (void)(0) #endif /* // Usage example: #include "verify.hpp" #include <stdio.h> char first_char( char const * s ) { verify( s && ::strlen(s) ); return s[0]; } // Cheers! // dan */ #endif Jan 05 2004
No! verify() has a well established semantic to be === to assert in debug mode, but to not elide the expression in release mode. In other words, the side effects of the expression are always present in the executable. Frankly, I hate those semantics, as it's constantly misused and mistaken for assert, and vice versa, but creating your own verify() that is === assert() will only add to the confusion. Make it my_assert() or something. "dan" <dan_member pathlink.com> wrote in message news:btb8jc$1koi$1 digitaldaemon.com...//file: verify.hpp #ifndef VERIFY_HPP #define VERIFY_HPP #ifdef _DEBUG # define verify(x) do{ if( !((x)) ) asm int 3; }while(0) #else # define verify(x) (void)(0) #endif /* // Usage example: #include "verify.hpp" #include <stdio.h> char first_char( char const * s ) { verify( s && ::strlen(s) ); return s[0]; } // Cheers! // dan */ #endif Jan 05 2004
No! verify() has a well established semantic to be === to assert in debug mode, but to not elide the expression in release mode. In other words, the side effects of the expression are always present in the executable. Frankly, I hate those semantics, as it's constantly misused and mistaken for assert, and vice versa, but creating your own verify() that is === assert() will only add to the confusion. Make it my_assert() or something. Jan 05 2004
No! verify() has a well established semantic to be === to assert in debug mode, but to not elide the expression in release mode. In other words, Jan 05 2004
Sure. ENSURE is as good as anything else. :) Jan 05 2004
int 3 gives a continuable exception, so if your debugger is up to it (as I would expect it would) then continuing should be a no-brainer. If it's not, though, I'm not much of an expert any deeper than what we've touched on, so you'll be on your own. ;/ "dan" <dan_member pathlink.com> wrote in message news:btbn6d$2bll$1 digitaldaemon.com...Sure. ENSURE is as good as anything else. :) Jan 05 2004
int 3 gives a continuable exception, so if your debugger is up to it (as I would expect it would) then continuing should be a no-brainer. If it's not, though, I'm not much of an expert any deeper than what we've touched on, so you'll be on your own. ;/ Jan 05 2004
Forgive my ignorance but why the do and while? What's wrong if just # define verify(x) if( !((x)) ) asm int 3; or # define verify(x) { if( !((x)) ) asm int 3; }//file: verify.hpp #ifndef VERIFY_HPP #define VERIFY_HPP #ifdef _DEBUG # define verify(x) do{ if( !((x)) ) asm int 3; }while(0) #else # define verify(x) (void)(0) #endif /* // Usage example: #include "verify.hpp" #include <stdio.h> char first_char( char const * s ) { verify( s && ::strlen(s) ); return s[0]; } // Cheers! // dan */ #endif Jan 05 2004
"Sean" <seanchen telus.net> wrote:Forgive my ignorance but why the do and while? What's wrong if just # define verify(x) if( !((x)) ) asm int 3; or # define verify(x) { if( !((x)) ) asm int 3; } Jan 05 2004
I see, thanks. "Gisle Vanem" <giva users.sourceforge.net> ???? news:btdi7k$2759$1 digitaldaemon.com..."Sean" <seanchen telus.net> wrote:Forgive my ignorance but why the do and while? What's wrong if just # define verify(x) if( !((x)) ) asm int 3; or # define verify(x) { if( !((x)) ) asm int 3; } Jan 05 2004
For if cases I usually use following form: #define check(x) if (x) do_something; else Than you are forced to write ; after check, i.e. check(a>b); But you have no problems with else and other stuff. Nic Tiger. "Sean" <seanchen telus.net> wrote in message news:btdp5g$2h08$1 digitaldaemon.com...I see, thanks. "Gisle Vanem" <giva users.sourceforge.net> ???? news:btdi7k$2759$1 digitaldaemon.com..."Sean" <seanchen telus.net> wrote:Forgive my ignorance but why the do and while? What's wrong if just # define verify(x) if( !((x)) ) asm int 3; or # define verify(x) { if( !((x)) ) asm int 3; } Jan 06 2004
|