-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Here you can find all information about the LeakSanitizer as well as the documentation of the available API.
Apart from finding memory leaks this sanitizer has a few more sophisticated features:
- The behaviour can be adjusted.
- Optional statistical bookkeeping can be queried with a C API.
- A few additional signal handlers.
The behaviour of this sanitizer can be adjusted using a few variables. They can be set using the C API or as environment variables.
All available variables can be found here.
Tip
- Example:
LSAN_LEAK_COUNT=100 ./a.out
- Example using the C API:
#include <lsan_internals.h>
int main(void) {
__lsan_leakCount = 100;
}
The statistical bookkeeping can be activated and queried using the C API.
Activate the statistics using LSAN_STATS_ACTIVE
or __lsan_statsActive
as described above.
Read the documentation of the full set of functions here.
Tip
Example of printing the statistics:
#include <string.h> // For strdup(...)
#include <lsan_internals.h> // For __lsan_statsActive
#include <lsan_stats.h>
int main(void) {
__lsan_statsActive = true;
void * pointer = strdup("Example leak");
__lsan_printStats();
__lsan_printFragmentationStats();
}
Signal | Action |
---|---|
SIGUSR1 |
Printing the current memory statistics. |
SIGUSR2 |
Printing a stacktrace where the signal was received. |
Deadly signal | Caught and a stacktrace of the crash is printed. |
More about signal handlers here.
Copyright (C) 2022 - 2024 mhahnFr.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".