feat(contrib): asan debugging script #18892

Opted to use a shell script because it's simpler to manipulate
environment variables than in makefiles.
This commit is contained in:
dundargoc 2022-06-12 19:54:14 +02:00 committed by GitHub
parent 502f03fc06
commit f4967828f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 0 deletions

28
contrib/asan.sh Executable file
View File

@ -0,0 +1,28 @@
#!/bin/bash
# Helper script to build and run neovim with Address Sanitizer enabled.
# You may read more information in src/nvim/README.md in the section "Build
# with ASAN".
shopt -s nullglob
root_path=$(git rev-parse --show-toplevel)
log_path=$(mktemp -d)
export CC='clang'
# Change to detect_leaks=1 to detect memory leaks (slower).
export ASAN_OPTIONS="detect_leaks=0:log_path=$log_path/asan"
# Show backtraces in the logs.
export UBSAN_OPTIONS="print_stacktrace=1"
make -C "$root_path" CMAKE_EXTRA_FLAGS="-DCLANG_ASAN_UBSAN=ON"
VIMRUNTIME="$root_path"/runtime "$root_path"/build/bin/nvim
# Need to manually reset terminal to avoid mangled output, nvim does not
# properly restore the terminal when it crashes.
tput reset
for i in "$log_path"/*; do
cat "$i"
done