Clang обратный вызов дезинфицирующего средства при ошибке

Можно ли установить какой-то callback, который будет вызываться, когда clang sanitizer обнаружит ошибку? Мне нужно напечатать некоторую полезную информацию, такую ​​как - имя теста.

P.S. Тесты хранятся/хранятся в виде файлов XML, а не в C++, поэтому трассировка стека не сообщит мне имя неудачного теста.


person willir    schedule 26.12.2017    source источник


Ответы (1)


Есть __sanitizer_set_death_callback и __asan_set_error_report_callback (объявлены в asan_interface. ч).

Также, как указывает willir, может быть достаточно просто запустить ASAN_OPTIONS=abort_on_error=1. Это приведет к тому, что Asan вызовет abort при ошибке, и многие среды модульного тестирования могут затем пропустить неудачный тест и продолжить выполнение.

person yugr    schedule 29.12.2017
comment
Спасибо за ваш ответ. Я хотел бы добавить, что во многих случаях достаточно просто ASAN_OPTIONS=abort_on_error переменной окружения. Это заставляет дезинфицирующее средство вызывать abort вместо _exit, так что вы можете справиться с этим. Большинство тестовых фреймворков уже обрабатывают abort. - person willir; 07.01.2018