Чтобы иметь возможность отлаживать и путать весь дистрибутив Linux, я хотел бы установить ASAN (AddressSanitizer, https://en.wikipedia.org/wiki/AddressSanitizer) как вариант по умолчанию для gcc. Таким образом, как правило, чтобы достичь того, чего я хочу, в общем, я поставил следующие переменные перед скомпилировать Линукс пакет:Включить AddressSanitizer по умолчанию в gcc
CFLAGS="-fsanitize=address,undefined -Wformat -Werror=format-security -Werror=array-bounds -g"
CXXFLAGS="-fsanitize=address,undefined -Wformat -Werror=format-security -Werror=array-bounds -g"
LDFLAGS="-fsanitize=address,undefined"
и попытаться собрать и запустить свой код. Я хотел бы иметь его по умолчанию gcc.
Один из вариантов - использование файлов спецификаций: https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html. Однако я не нашел способ установить «catch all rules» для компиляции и привязки всего кода c/C++ с помощью AddressSanitizer.
Мои вопросы:
- Любой пример того, как сделать это с помощью спецификации файлов?
- Это лучший способ сделать это?
- Любой другой альтернативный подход?
привет, не могли бы вы указать мне пример оболочки gcc? Я нашел, например, https://github.com/gawen947/gcc-wrapper, который я мог бы изучить, однако, если у вас есть что-то уже в виду, было бы лучше .. –
@VP. Ну, это действительно просто примитивная оболочечная оболочка, которая вызывает «true» gcc с помощью «-fanitize = address -fsanitize-recover = address -fno-common и т. Д.». Gcc-обертки - обычная практика (см., Например, [инструкции pbuilder] (https://wiki.debian.org/PbuilderTricks#How_to_use_pbuilder_to_test_build_with_gcc-snapshot)), но я боюсь, что у меня нет ссылки на Асана. – yugr
Хорошо, я сделал что-то вроде export MYFLAGS = "..."; exec/usr/bin/gcc-6 $ @ но он не работал как-то .. спасибо вам большое спасибо! –