-
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:
- Crashes are caught.
- The behaviour can be adjusted.
- Optional statistical bookkeeping can be queried with a C API.
The behaviour of this sanitizer can be adjusted using environment variables.
Tip
Example:
LSAN_INDIRECT_LEAKS=true ./a.out
The statistics can be printed automatically by setting the environment variable LSAN_AUTO_STATS
to a valid
time interval.
Alternatively, the C API can be used. Activate the statistical bookkeeping by setting the environment variable
LSAN_STATS_ACTIVE
to true
.
Read the documentation of the full set of functions here.
Tip
Example of printing the statistics:
#include <string.h> // For strdup(...)
#include <lsan_stats.h>
int main(void) {
void* pointer = strdup("Example leak");
__lsan_printStats();
__lsan_printFragmentationStats();
}
Execute it as follows:
LSAN_STATS_ACTIVE=true ./a.out
The following signal handlers are available:
Signal | Action |
---|---|
SIGUSR1 |
Prints the current memory statistics if they have been activated. |
SIGUSR2 |
Prints a stacktrace where the signal was received. |
Any deadly signal | is caught and a stacktrace of the crash is printed. |
More about signal handlers here.
Copyright (C) 2022 - 2025 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.