Опция Sanitizer адреса "-fsanitize-recovery = address" не поддерживается - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь использовать Address Sanitizer с gcc в моем проекте.

Итак, я добавил необходимые флаги в компилятор и компоновщик:

ADD_COMPILE_OPTIONS(-O0 -g -Wall -fsanitize=address -fno-omit-frame-pointer)
SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")

Address Sanitizer работает послеэто, но это прерывает мое приложение после первой ошибки.Я хочу, чтобы Address Sanitizer продолжал работать даже после сообщения об ошибке.Итак, я добавил еще один флаг, как показано ниже (по ссылке https://github.com/google/sanitizers/wiki/AddressSanitizer):

ADD_COMPILE_OPTIONS(-O0 -g -Wall -fsanitize=address -fsanitize-recover=address -fno-omit-frame-pointer)

После этого я получаю сообщение об ошибке, что этот флаг восстановления не поддерживается:

Problems were encountered while collecting compiler information:
cc1plus: error: -fsanitize-recover=address is not supported

PS: Моя версия gcc - это gcc (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.10) 5.4.0 20160609

1 Ответ

0 голосов
/ 20 ноября 2018

Я считаю, что gcc 6 - самая ранняя версия, которая поддерживает режим восстановления Asan.Этот режим был добавлен в ноябрь 2015 , тогда как GCC 5 был выпущен в апреле 2015 года.

Вы можете установить GCC 6 или использовать Clang.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...