Define wxDEBUG_LEVEL in both debug and release builds as 1.
By default include assertions and debug logging in both debug and release builds but disable them in application release builds (when NDEBUG is defined). Also update (more accurately, replace) debugging overview. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61886 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -37,28 +37,29 @@ class WXDLLIMPEXP_FWD_BASE wxCStrData;
|
||||
2: Maximal (at least for now): asserts which are "expensive"
|
||||
(performance-wise) or only make sense for finding errors in wxWidgets
|
||||
itself, as opposed to bugs in applications using it, are also enabled.
|
||||
|
||||
For compatibility reasons, currently wxDEBUG_LEVEL is defined if
|
||||
__WXDEBUG__ is defined but in the near future (2.9.1) the role of the flags
|
||||
will change and wxDEBUG_LEVEL will be the primary value with __WXDEBUG__
|
||||
only used for compatibility.
|
||||
*/
|
||||
|
||||
// if _DEBUG is defined (MS VC++ and others use it in debug builds), define
|
||||
// __WXDEBUG__ too
|
||||
#ifdef _DEBUG
|
||||
// unless wxDEBUG_LEVEL is predefined (by configure or via wx/setup.h under
|
||||
// Windows), use the default
|
||||
#if !defined(wxDEBUG_LEVEL)
|
||||
#define wxDEBUG_LEVEL 1
|
||||
#endif // !defined(wxDEBUG_LEVEL)
|
||||
|
||||
/*
|
||||
__WXDEBUG__ is defined when wxDEBUG_LEVEL != 0. This is done mostly for
|
||||
compatibility but it also provides a simpler way to check if asserts and
|
||||
debug logging is enabled at all.
|
||||
*/
|
||||
#if wxDEBUG_LEVEL > 0
|
||||
#ifndef __WXDEBUG__
|
||||
#define __WXDEBUG__
|
||||
#endif // !__WXDEBUG__
|
||||
#endif // _DEBUG
|
||||
|
||||
// if NDEBUG is defined (<assert.h> uses it), undef __WXDEBUG__ and WXDEBUG
|
||||
#ifdef NDEBUG
|
||||
#endif
|
||||
#else
|
||||
#undef __WXDEBUG__
|
||||
#undef WXDEBUG
|
||||
#endif // NDEBUG
|
||||
#endif
|
||||
|
||||
// if __WXDEBUG__ is defined, make sure that WXDEBUG is defined and >= 1
|
||||
// Finally there is also a very old WXDEBUG macro not used anywhere at all, it
|
||||
// is only defined for compatibility.
|
||||
#ifdef __WXDEBUG__
|
||||
#if !defined(WXDEBUG) || !WXDEBUG
|
||||
#undef WXDEBUG
|
||||
@@ -66,15 +67,6 @@ class WXDLLIMPEXP_FWD_BASE wxCStrData;
|
||||
#endif // !WXDEBUG
|
||||
#endif // __WXDEBUG__
|
||||
|
||||
// temporarily define wxDEBUG_LEVEL as function of __WXDEBUG__
|
||||
#if !defined(wxDEBUG_LEVEL)
|
||||
#ifdef __WXDEBUG__
|
||||
#define wxDEBUG_LEVEL 1
|
||||
#else
|
||||
#define wxDEBUG_LEVEL 0
|
||||
#endif
|
||||
#endif // !defined(wxDEBUG_LEVEL)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Handling assertion failures
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -126,6 +118,14 @@ inline wxAssertHandler_t wxSetAssertHandler(wxAssertHandler_t handler)
|
||||
return old;
|
||||
}
|
||||
|
||||
/*
|
||||
Reset the default assert handler.
|
||||
|
||||
This may be used to enable asserts, which are disabled by default in this
|
||||
case, for programs built in release build (NDEBUG defined).
|
||||
*/
|
||||
extern void WXDLLIMPEXP_BASE wxSetDefaultAssertHandler();
|
||||
|
||||
#else // !wxDEBUG_LEVEL
|
||||
|
||||
// provide empty stubs in case assertions are completely disabled
|
||||
@@ -137,11 +137,26 @@ inline wxAssertHandler_t wxSetAssertHandler(wxAssertHandler_t /* handler */)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inline void wxSetDefaultAssertHandler() { }
|
||||
|
||||
#endif // wxDEBUG_LEVEL/!wxDEBUG_LEVEL
|
||||
|
||||
// simply a synonym for wxSetAssertHandler(NULL)
|
||||
inline void wxDisableAsserts() { wxSetAssertHandler(NULL); }
|
||||
|
||||
/*
|
||||
A macro which disables asserts for applications compiled in release build.
|
||||
|
||||
By default, IMPLEMENT_APP (or rather IMPLEMENT_WXWIN_MAIN) disable the
|
||||
asserts in the applications compiled in the release build by calling this.
|
||||
It does nothing if NDEBUG is not defined.
|
||||
*/
|
||||
#ifdef NDEBUG
|
||||
#define wxDISABLE_ASSERTS_IN_RELEASE_BUILD() wxDisableAsserts()
|
||||
#else
|
||||
#define wxDISABLE_ASSERTS_IN_RELEASE_BUILD()
|
||||
#endif
|
||||
|
||||
#if wxDEBUG_LEVEL
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user