vpp/docs/troubleshooting/sanitizer.rst
John DeNisco d52820d264 docs: Minor fixes in publish_docs.sh and sanitizer.rst
Fix a warning in sanitizer.rst and publish_docs.sh

Type: fix

Signed-off-by: John DeNisco <jdenisco@cisco.com>
Change-Id: I66d724f52a7b724a97a894e1cd35c1239aeedcdf
2020-05-29 13:12:40 +00:00

46 lines
1.5 KiB
ReStructuredText

.. _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, only for GCC and only for the heap.
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. It 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 CC=gcc-8
....
# build a release image with ASan support:
$ make rebuild-release VPP_EXTRA_CMAKE_ARGS=-DVPP_ENABLE_SANITIZE_ADDR=ON CC=gcc-8
....
# build packages in debug mode with ASan support:
$ make pkg-deb-debug VPP_EXTRA_CMAKE_ARGS=-DVPP_ENABLE_SANITIZE_ADDR=ON CC=gcc-8
....
# run GBP plugin tests in debug mode with ASan
$ make test-debug TEST=test_gbp VPP_EXTRA_CMAKE_ARGS=-DVPP_ENABLE_SANITIZE_ADDR=ON CC=gcc-8
....
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 }"
....