Мы планируем интегрировать инструмент AddressSanitizer в нашу инфраструктуру сборки.
Для этого я работаю над нашими файлами GNUmake, чтобы скомпилировать весь мой код C с помощью AddressSanitizer (добавляя флаг :-fsanitize=address). Теперь я хотел бы проверить, скомпилирован ли созданный объектный файл или исполняемый файл с помощью AddressSanitizer или нет.
Есть ли способ, которым я могу проверить то же самое.
Я просто пытаюсь запустить nm | грэп асан :-
Это дает следующие неопределенные ссылочные символы.
U __asan_init
U __asan_option_detect_stack_use_after_return
U __asan_register_globals
U __asan_report_load1
U __asan_report_load4
U __asan_stack_malloc_1
U __asan_unregister_globals
Я не уверен, что это правильный способ проверки. Он показывает неопределенную ссылку, как указано выше. Я не уверен, правильно ли я интегрировал AddressSanitizer в нашу систему сборки. Можно ли просто скомпилировать код с ( -fsanitize=address) ? или еще мне нужно что-то сделать здесь для успешного использования AddressSanitizer.
Пожалуйста, помогите мне в этом. Заранее спасибо.
-c
), и связать с этим флагом. - person yugr   schedule 20.01.2020-fsanitize=address
добавит эти флаги за вас. - person yugr   schedule 20.01.2020-fsanitize=address
расширяется до-L... -lasan
и множества других вещей. Разработчики Asan предлагают использовать-fsanitize=address
вместо явного-lasan
. Проверьте этот ответ для получения более подробной информации. - person yugr   schedule 20.01.2020libasan.so
(если вы используете Clang, они будут определены, потому что он связываетlibclangrt_asan
статически). - person yugr   schedule 20.01.2020