I was not satisfied with the previous debugging options structure. Improve it again.
diff --git a/src/include/lwip/debug.h b/src/include/lwip/debug.h
index 05ccf39..a142f1c 100644
--- a/src/include/lwip/debug.h
+++ b/src/include/lwip/debug.h
@@ -41,12 +41,12 @@
 #include "lwip/opt.h"
 
 /**
- * @defgroup debugging Debugging
- * @ingroup lwip
+ * @defgroup debugging_levels LWIP_DBG_MIN_LEVEL and LWIP_DBG_TYPES_ON values
+ * @ingroup lwip_opts_debugmsg
  * @{
  */
 
-/** @name Debug level
+/** @name Debug level (LWIP_DBG_MIN_LEVEL)
  * @{
  */
 /** Debug level: ALL messages*/
@@ -65,7 +65,7 @@
 /* compatibility define only */
 #define LWIP_DBG_LEVEL_OFF     LWIP_DBG_LEVEL_ALL
 
-/** @name Enable/disable debug messages completely
+/** @name Enable/disable debug messages completely (LWIP_DBG_TYPES_ON)
  * @{
  */
 /** flag for LWIP_DEBUGF to enable that debug message */
@@ -76,7 +76,7 @@
  * @}
  */
 
-/** @name Debug message types
+/** @name Debug message types (LWIP_DBG_TYPES_ON)
  * @{
  */
 /** flag for LWIP_DEBUGF indicating a tracing message (to follow program flow) */
@@ -92,6 +92,15 @@
  */
 
 /**
+ * @}
+ */
+
+/**
+ * @defgroup lwip_assertions Assertion handling
+ * @ingroup lwip_opts_debug
+ * @{
+ */
+/**
  * LWIP_NOASSERT: Disable LWIP_ASSERT checks:
  * To disable assertions define LWIP_NOASSERT in arch/cc.h.
  */
@@ -99,6 +108,9 @@
 #define LWIP_NOASSERT
 #undef LWIP_NOASSERT
 #endif
+/**
+ * @}
+ */
 
 #ifndef LWIP_NOASSERT
 #define LWIP_ASSERT(message, assertion) do { if (!(assertion)) { \
@@ -126,7 +138,6 @@
 
 /** Enable debug message printing, but only if debug message type is enabled
  *  AND is of correct type AND is at least LWIP_DBG_LEVEL.
- * e.g. \#define LWIP_DEBUG (LWIP_DBG_ON | LWIP_DBG_LEVEL_ALL | LWIP_DBG_TRACE)
  */
 #ifdef __DOXYGEN__
 #define LWIP_DEBUG
@@ -153,8 +164,4 @@
 #define LWIP_DEBUGF(debug, message)
 #endif /* LWIP_DEBUG */
 
-/**
- * @}
- */
-
 #endif /* LWIP_HDR_DEBUG_H */
diff --git a/src/include/lwip/opt.h b/src/include/lwip/opt.h
index f30bd26..5abac30 100644
--- a/src/include/lwip/opt.h
+++ b/src/include/lwip/opt.h
@@ -2594,7 +2594,7 @@
    ---------------------------------------
 */
 /**
- * @defgroup lwip_opts_debugmsg Debugging
+ * @defgroup lwip_opts_debugmsg Debug messages
  * @ingroup lwip_opts_debug
  * @{
  */
@@ -2602,6 +2602,7 @@
  * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is
  * compared against this value. If it is smaller, then debugging
  * messages are written.
+ * @see debugging_levels
  */
 #if !defined LWIP_DBG_MIN_LEVEL || defined __DOXYGEN__
 #define LWIP_DBG_MIN_LEVEL              LWIP_DBG_LEVEL_ALL
@@ -2610,6 +2611,7 @@
 /**
  * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable
  * debug messages of certain types.
+ * @see debugging_levels
  */
 #if !defined LWIP_DBG_TYPES_ON || defined __DOXYGEN__
 #define LWIP_DBG_TYPES_ON               LWIP_DBG_ON