¿Cómo obtengo números de línea en la salida de depuración con -fsanitize=address de clang?

 C Programming >> Programación C >  >> Tags >> Clang
¿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.