aboutsummaryrefslogtreecommitdiffstats
path: root/docs/gettingstarted/troubleshooting/sanitizer.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/gettingstarted/troubleshooting/sanitizer.rst')
-rw-r--r--docs/gettingstarted/troubleshooting/sanitizer.rst48
1 files changed, 48 insertions, 0 deletions
diff --git a/docs/gettingstarted/troubleshooting/sanitizer.rst b/docs/gettingstarted/troubleshooting/sanitizer.rst
new file mode 100644
index 00000000000..d2c8b1181d6
--- /dev/null
+++ b/docs/gettingstarted/troubleshooting/sanitizer.rst
@@ -0,0 +1,48 @@
+.. _sanitizer:
+
+*****************
+Google Sanitizers
+*****************
+
+VPP is instrumented to support `Google Sanitizers <https://github.com/google/sanitizers>`_.
+As of today, only `AddressSanitizer <https://github.com/google/sanitizers/wiki/AddressSanitizer>`_
+is supported, both for GCC and clang.
+
+AddressSanitizer
+================
+
+`AddressSanitizer <https://github.com/google/sanitizers/wiki/AddressSanitizer>`_ (aka ASan) is a memory
+error detector for C/C++. Think Valgrind but much faster.
+
+In order to use it, VPP must be recompiled with ASan support.
+See developer documentation on prerequisites for :ref:`building VPP <building>`.
+
+ASan support is implemented as a cmake build option,
+so all VPP targets should be supported. For example:
+
+.. code-block:: console
+
+ # build a debug image with ASan support:
+ $ make rebuild VPP_EXTRA_CMAKE_ARGS=-DVPP_ENABLE_SANITIZE_ADDR=ON
+ ....
+
+ # build a release image with ASan support:
+ $ make rebuild-release VPP_EXTRA_CMAKE_ARGS=-DVPP_ENABLE_SANITIZE_ADDR=ON
+ ....
+
+ # build packages in debug mode with ASan support:
+ $ make pkg-deb-debug VPP_EXTRA_CMAKE_ARGS=-DVPP_ENABLE_SANITIZE_ADDR=ON
+ ....
+
+ # run GBP plugin tests in debug mode with ASan
+ $ make test-debug TEST=test_gbp VPP_EXTRA_CMAKE_ARGS=-DVPP_ENABLE_SANITIZE_ADDR=ON
+ ....
+
+Once VPP has been built with ASan support you can use it as usual including
+under gdb:
+
+.. code-block:: console
+
+ $ gdb --args $PWD/build-root/install-vpp_debug-native/vpp/bin/vpp "unix { interactive }"
+ ....
+