X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=docs%2Ftroubleshooting%2Fsanitizer.rst;h=217f5e57182a8e306f36e0ae2a4becd11b48bb04;hb=3d5f08a82;hp=af239943da3f88384f1f7d23f98d1a5a2b4d655a;hpb=87e64c929fa534ebd29b18f38fc6c15fd216e7e4;p=vpp.git diff --git a/docs/troubleshooting/sanitizer.rst b/docs/troubleshooting/sanitizer.rst index af239943da3..217f5e57182 100644 --- a/docs/troubleshooting/sanitizer.rst +++ b/docs/troubleshooting/sanitizer.rst @@ -1,15 +1,15 @@ .. _sanitizer: -************** +***************** Google Sanitizers -************** +***************** VPP is instrumented to support `Google Sanitizers `_. As of today, only `AddressSanitizer `_ -is supported and only for the heap. +is supported, both for GCC and clang. AddressSanitizer -============== +================ `AddressSanitizer `_ (aka ASan) is a memory error detector for C/C++. Think Valgrind but much faster. @@ -20,27 +20,26 @@ 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=-DENABLE_SANITIZE_ADDR=ON + $ 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=-DENABLE_SANITIZE_ADDR=ON + $ 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=-DENABLE_SANITIZE_ADDR=ON + $ 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=-DENABLE_SANITIZE_ADDR=ON + $ 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. When -running under a debugger it can be useful to disable LeakSanitizer which is -not compatible with a debugger and displays spurious warnings at exit: +Once VPP has been built with ASan support you can use it as usual including +under gdb: .. code-block:: console - $ ASAN_OPTIONS=detect_leaks=0 gdb --args $PWD/build-root/install-vpp_debug-native/vpp/bin/vpp "unix { interactive }" + $ gdb --args $PWD/build-root/install-vpp_debug-native/vpp/bin/vpp "unix { interactive }" ....