all about ASan & debug symbol

prerequisites

if you use clang infrastructure

  • llvm-symbolizer: without this, asan offset at debug output will be binary offset, not actual source code. I will demonstrate it
  • clang

if you use GCC

  • addr2line (usually preinstalled)
  • gcc

the tools

testing

very simple memory buggy program

#include <stdlib.h>
#include <stdio.h>

int main() {
        char* data = malloc(1024);
        printf("%s", data);
        return 0;
}

gcc ./leak.c -o leak -g -fsanitize=address

here buggy result image

lets compile it with clang clang ./leak.c -o leak -g -fsanitize=address

image

after llvm-symbolizer installed image