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