ASAN brakuje swojej drodze. Poniższe czynności zostały wykonane poza Xcode, aby sprawdzić, czy mogę zamanifestować błąd i było to łatwe, jeśli ścieżka była niezdefiniowana. Domyślam się, że XCode nie może znaleźć go tam, gdzie jest szukany lub jak w poniższym przypadku ścieżka ASAN jest niezdefiniowana.
Podczas próby to jeśli dodać i usunąć go z drogi błąd odchodzi ale numery linii zniknie również tj jeśli chcesz ponownie zobaczyć rzeczywisty komunikat o błędzie trzeba użyć
unset ASAN_SYMBOLIZER_PATH
nie
ASAN_SYMBOLIZER_PATH=
Tworzenie programu ac następująco ...
int main(void){
int a[3];
a[3] = 4;
return 0;
}
go skompilować, proszę ignorować ostrzeżenia teraz ...
gcc -std=c11 -Wall -g3 -fno-omit-frame-pointer -fsanitize=address broken_asan_test.c
./a.out
Powinieneś zobaczyć coś takiego ...
=================================================================
==29192==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff5ad1052c at pc 0x000104eefe78 bp 0x7fff5ad104f0 sp 0x7fff5ad104e8
WRITE of size 4 at 0x7fff5ad1052c thread T0
#0 0x104eefe77 in atos[29193]: [fatal] 'pid_for_task' failed: (os/kern) failure (5) (+0x100000e77)
==29192==WARNING: Can't write to symbolizer at fd 3
#1 0x7fff940495ac in atos[29206]: [fatal] 'pid_for_task' failed: (os/kern) failure (5) (+0x35ac)
#2 0x0 (<unknown module>)
Wskazówka ta linia
==29192==WARNING: Can't write to symbolizer at fd 3
Zmień mieć symbolizer dodany do ścieżki ...
export ASAN_SYMBOLIZER_PATH=/usr/local/Cellar/llvm/3.6.2/bin/llvm-symbolizer
i błąd zniknie ...
=================================================================
==29312==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff55ac450c at pc 0x00010a13be78 bp 0x7fff55ac44d0 sp 0x7fff55ac44c8
WRITE of size 4 at 0x7fff55ac450c thread T0
#0 0x10a13be77 in main (/git/ghub/doc/c/./a.out+0x100000e77)
#1 0x7fff940495ac in start (/usr/lib/system/libdyld.dylib+0x35ac)
#2 0x0 (<unknown module>)
Btw, to samo działa poprawnie w Xcode 7.2.1. Mając wrażenie, że to błąd w Xcode 7.3 – HelloWorld