¿Cómo obtengo números de línea en la salida de depuración con -fsanitize=address de clang?
Si miramos el clang
La documentación de AddressSanitizer dice:
y muestra el siguiente ejemplo:
Como señaló el OP, la ubicación de instalación puede variar, pero una vez que sepa dónde llvm-symbolizer
se encuentra los pasos son los mismos.
¿Es addr2line lo que está buscando?
$ addr2line -e ./test 0x43e94f
some/file.c:1234
A veces, usar un símbolo con un número de versión dará el 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.
Esto se puede arreglar apuntando a un llvm-symbolizer
sin adornos binario:
export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-5.0/bin/llvm-symbolizer
Luego ejecutó su ejecutable como lo haría normalmente.