From bdf7fb9e954bbb69f0e0a10f4006587a994ab6de Mon Sep 17 00:00:00 2001 From: Ian McInerney Date: Sat, 5 Oct 2019 19:08:21 +0200 Subject: [PATCH] Update building documentation with new debugging options --- Documentation/development/compiling.md | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Documentation/development/compiling.md b/Documentation/development/compiling.md index 3b16725f6e..9aa9ef8b42 100644 --- a/Documentation/development/compiling.md +++ b/Documentation/development/compiling.md @@ -194,6 +194,40 @@ passed via the OCE_DIR flag. This option is enabled by default. Alternatively KICAD_USE_OCC can be used instead of OCE. Both options are not supposed to be enabled at the same time. +## Development Analysis Tools ## {#dev_tools} + +KiCad can be compiled with support for several features to aid in the catching and debugging of +runtime memory issues + +### Valgrind support + +The KICAD_USE_VALGRIND option is used to enable Valgrind's stack annotation feature in the tool framework. +This provides the ability for Valgrind to trace memory allocations and accesses in the tool framework +and reduce the number of false positives reported. This option is disabled by default. + +### C++ standard library debugging + +KiCad provides two options to enable debugging assertions contained in the GCC C++ standard library: +KICAD_STDLIB_DEBUG and KICAD_STDLIB_LIGHT_DEBUG. Both these options are disabled by default, and only +one should be turned on at a time with KICAD_STDLIB_DEBUG taking precedence. + +The KICAD_STDLIB_LIGHT_DEBUG option enables the light-weight standard library assertions by passing +`_GLIBCXX_ASSERTIONS ` into CXXFLAGS. This enables things such as bounds checking on strings, arrays +and vectors, as well as null pointer checks for smart pointers. + +The KICAD_STDLIB_DEBUG option enables the full set of standard library assertions by passing +`_GLIBCXX_DEBUG` into CXXFLAGS. This enables full debugging support for the standard library. + +### Address Sanitizer support + +The KICAD_SANITIZE option enables Address Sanitizer support to trace memory allocations and +accesses to identify problems. This option is disabled by default. The Address Sanitizer +contains several runtime options to tailor its behavior that are described in more detail in its +[documentation](https://github.com/google/sanitizers/wiki/AddressSanitizerFlags). + +This option is not supported on all build systems, and is known to have problems when using +mingw. + ## Demos and Examples ## {#demo_install_opt} The KiCad source code includes some demos and examples to showcase the program. You can choose