diff --git a/CMake/CMakeLists_root.txt b/CMake/CMakeLists_root.txt
index 4b450dc2468b125541625d9889fb71085f8d0c7f..8f5815ae842ddb6d3accf27981cbdaa424a29f72 100644
--- a/CMake/CMakeLists_root.txt
+++ b/CMake/CMakeLists_root.txt
@@ -53,6 +53,9 @@ endif ()
 # Flags according to Debug/Release decision
 #  - CMake uses -g on Debug implicitly
 #  - fPIC for libraries will be enabled explicitly
+#  - add sanitizer? -DSANITIZE=<sanitizer>
+include(sanitizer)
+
 set(ALIB_BUILD_FLAGS_COMMON -Wall -pedantic -pipe -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls)
 set(ALIB_BUILD_FLAGS_DEBUG ${{ALIB_BUILD_FLAGS_COMMON}} -Og)
 set(ALIB_BUILD_FLAGS_RELEASE ${{ALIB_BUILD_FLAGS_COMMON}} -O3)
diff --git a/CMake/sanitizer.cmake b/CMake/sanitizer.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..8168607dccd11a694fa3a3aeada5600e61b7061b
--- /dev/null
+++ b/CMake/sanitizer.cmake
@@ -0,0 +1,36 @@
+# Adapted from: https://github.com/Eyescale/CMake/blob/master/Sanitizer.cmake
+
+if(NOT SANITIZER)
+	return()
+endif()
+
+# According to: http://clang.llvm.org/docs/AddressSanitizer.html#usage
+# the following compiler flags allow us to keep -O1 on, if desired, but
+# still get pretty call stacks
+# set(_SANITIZER_COMPILE_OPTIONS "-g -fno-omit-frame-pointer -fno-optimize-sibling-calls")
+
+string(TOLOWER ${SANITIZER} SANITIZER)
+set(AVAILABLE_SANITIZERS "")
+
+if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+	if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.7)
+		set(AVAILABLE_SANITIZERS address thread)
+	endif()
+
+elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+	if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.1)
+		set(AVAILABLE_SANITIZERS address thread undefined)
+	endif()
+endif()
+
+list(FIND AVAILABLE_SANITIZERS ${SANITIZER} _SANITIZER_FOUND)
+
+if(${_SANITIZER_FOUND} GREATER -1)
+	set(_SANITIZER "-fsanitize=${SANITIZER}")
+
+	add_compile_options("-fno-omit-frame-pointer" ${_SANITIZER})
+	set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${_SANITIZER}")
+
+else()
+	message(WARNING "Sanitizer '${SANITIZER}' not set, check compiler support.")
+endif()