Как создать дамп ядра при ошибке 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 там по умолчанию отключены, опасаясь, что они будут слишком большими).

Другие вопросы по тегам