Как создать дамп ядра при ошибке AddressSanitizer
Я скомпилировал мой код, чтобы включить Asan:
g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer
но он никогда не генерирует дамп ядра, чтобы я мог позже изучить детали ошибки. Как я могу сгенерировать это?
1 ответ
Вам нужно установить переменную окружения для запроса coredumps
export ASAN_OPTIONS=abort_on_error=1
Это действительно должно быть по умолчанию, но по историческим причинам ASan просто завершает работу с ненулевым кодом ошибки.
В 64-битных системах вам может понадобиться добавить
export ASAN_OPTIONS=...:disable_coredump=0::unmap_shadow_on_exit=1
(coredumps там по умолчанию отключены, опасаясь, что они будут слишком большими).