diff --git a/configure.ac b/configure.ac
index a672a9354010ae60dd5c45c085d81cbd89f9489e..8d244e24b827d0631a4a52b08ad1851b689bcc3b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -668,7 +668,8 @@ dnl debug mode is default-disabled
 AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug], [Build in debug mode, adds stricter warnings, disables optimization]))
 
 AS_IF([test "x$enable_debug" = "xyes"],
-      [CXXFLAGS="${CXXFLAGS} -g -fno-omit-frame-pointer -Wall -Wextra -Wnon-virtual-dtor -Wno-unknown-pragmas -Wformat=2 -O0"])
+      [CXXFLAGS="${CXXFLAGS} -g -fno-omit-frame-pointer -Wall -Wextra -Wnon-virtual-dtor -Wno-unknown-pragmas -Wformat=2 -O0"],
+      [CXXFLAGS="${CXXFLAGS} -DNDEGUG=1"])
 
 dnl What Makefiles to generate
 
diff --git a/contrib/bootstrap b/contrib/bootstrap
index ae30e978e4224001251e6c43f13d29585a9bf617..090385552252a9cad0dd8dd3407e911a6c9e0b7b 100755
--- a/contrib/bootstrap
+++ b/contrib/bootstrap
@@ -26,6 +26,7 @@ usage()
 	echo "  --prefix=PREFIX     install files in PREFIX"
 	echo "  --no-checksums      don't verify checksums (allows to replace tarballs)"
 	echo "  --disable-downloads don't download packages from the internet"
+	echo "  --enable-debug      build with debug symbol and extra checks (disabled by default)"
 	echo "  --disable-FOO       configure to not build package FOO"
 	echo "  --enable-FOO        configure to build package FOO"
 }
@@ -58,6 +59,9 @@ do
 		--disable-downloads)
 			DISABLE_CONTRIB_DOWNLOADS="TRUE"
 			;;
+		--enable-debug)
+			ENABLE_DEBUG=1
+			;;
 		--host=*)
 			HOST="${1#--host=}"
 			;;
@@ -118,6 +122,7 @@ PKGS_DISABLE := $PKGS_DISABLE
 PKGS_ENABLE := $PKGS_ENABLE
 DISABLE_CONTRIB_DOWNLOADS := $DISABLE_CONTRIB_DOWNLOADS
 DISABLE_CONTRIB_CHECKSUMS := $DISABLE_CONTRIB_CHECKSUMS
+ENABLE_DEBUG := $ENABLE_DEBUG
 EOF
 
 add_make()
diff --git a/contrib/src/main.mak b/contrib/src/main.mak
index 2cc639a464379b35608ef3db3bf01d783b94c6cc..f07180eaef186642b51e0cc411da123fe90f3f4e 100644
--- a/contrib/src/main.mak
+++ b/contrib/src/main.mak
@@ -195,6 +195,12 @@ endif
 
 EXTRA_CXXFLAGS += -std=c++14
 
+ifdef ENABLE_DEBUG
+EXTRA_CFLAGS += -g -fno-omit-frame-pointer
+else
+EXTRA_CFLAGS += -DNDEBUG=1
+endif
+
 cppcheck = $(shell $(CC) $(CFLAGS) -E -dM - < /dev/null | grep -E $(1))
 
 EXTRA_CPPFLAGS += -I$(PREFIX)/include
diff --git a/contrib/src/pjproject/rules.mak b/contrib/src/pjproject/rules.mak
index 3710fb2b1ab1e970c7ad4ba4b3212c5c51b248d7..285a081dfa369fda5ea1eb6fd365b2c41b312731 100644
--- a/contrib/src/pjproject/rules.mak
+++ b/contrib/src/pjproject/rules.mak
@@ -34,8 +34,8 @@ ifdef HAVE_IOS
 PJPROJECT_OPTIONS += --with-ssl=$(PREFIX)
 endif
 
-PJPROJECT_EXTRA_CFLAGS = -g -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32
-PJPROJECT_EXTRA_CXXFLAGS = -g -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32 -std=gnu++11
+PJPROJECT_EXTRA_CFLAGS = -g -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32
+PJPROJECT_EXTRA_CXXFLAGS = -g -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32 -std=gnu++11
 
 ifdef HAVE_WIN64
 PJPROJECT_EXTRA_CFLAGS += -DPJ_WIN64=1