mirror of
https://github.com/google/googletest.git
synced 2024-12-28 02:53:16 +08:00
Add instructions for sanitizer integration
This commit is contained in:
parent
3005672db1
commit
bd619dee05
@ -2609,3 +2609,32 @@ to be handled by the debugger, such that you can examine the call stack when an
|
|||||||
exception is thrown. To achieve that, set the `GTEST_CATCH_EXCEPTIONS`
|
exception is thrown. To achieve that, set the `GTEST_CATCH_EXCEPTIONS`
|
||||||
environment variable to `0`, or use the `--gtest_catch_exceptions=0` flag when
|
environment variable to `0`, or use the `--gtest_catch_exceptions=0` flag when
|
||||||
running the tests.
|
running the tests.
|
||||||
|
|
||||||
|
### Sanitizer Integration
|
||||||
|
|
||||||
|
The
|
||||||
|
[Undefined Behavior Sanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html),
|
||||||
|
[Address Sanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizer),
|
||||||
|
and
|
||||||
|
[Thread Sanitizer](https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual)
|
||||||
|
all provide weak functions that you can override to trigger explicit failures
|
||||||
|
when they detect sanitizer errors, such as creating a reference from `nullptr`.
|
||||||
|
To override these functions, place definitions for them in a source file that
|
||||||
|
you compile as part of your main binary:
|
||||||
|
|
||||||
|
```
|
||||||
|
extern "C" {
|
||||||
|
void __ubsan_on_report() {
|
||||||
|
FAIL() << "Encountered an undefined behavior sanitizer error";
|
||||||
|
}
|
||||||
|
void __asan_on_error() {
|
||||||
|
FAIL() << "Encountered an address sanitizer error";
|
||||||
|
}
|
||||||
|
void __tsan_on_report() {
|
||||||
|
FAIL() << "Encountered a thread sanitizer error";
|
||||||
|
}
|
||||||
|
} // extern "C"
|
||||||
|
```
|
||||||
|
|
||||||
|
After compiling your project with one of the sanitizers enabled, if a particular
|
||||||
|
test triggers a sanitizer error, googletest will report that it failed.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user