How do I get line numbers in the debug output with clang's -fsanitize=address?
If we look at the clang
AddressSanitizer documentation it says:
To make AddressSanitizer symbolize its output you need to set the ASAN_SYMBOLIZER_PATH environment variable to point to the llvm-symbolizer binary (or make sure llvm-symbolizer is in your $PATH):
and shows the the following example:
ASAN_SYMBOLIZER_PATH=/usr/local/bin/llvm-symbolizer ./a.out
As the OP noted, the install location may vary, but once you know where llvm-symbolizer
is located the steps are the same.
Is addr2line what you are looking for?
$ addr2line -e ./test 0x43e94f
some/file.c:1234
Sometimes using a symbolizer with a version number will give the error:
ERROR: External symbolizer path is set to '/usr/bin/llvm-symbolizer-5.0' which isn't a known symbolizer. Please set the path to the llvm-symbolizer binary or other known tool.
This can be fixed by pointing to an unadorned llvm-symbolizer
binary:
export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-5.0/bin/llvm-symbolizer
Then ran your executable as you normally would.