22 квітня 2014 року вийшов GCC 4.9.0, у якому з'явився інструмент UndefinedBehaviorSanitizer (ubsan) для швидкого виявлення невизначеної поведінки коду.
Головним нововведенням став UndefinedBehaviorSanitizer (UBSan). Цей інструмент дозволяє виявляти невизначену поведінку в коді мовами C та C++ безпосередньо під час виконання програми. Активується він за допомогою прапорця компіляції -fsanitize=undefined, що значно спрощує процес налагодження та виявлення потенційних вразливостей, таких як переповнення цілих чисел або некоректне розіменування вказівників.
Рекомендації:
- Додайте прапорець
-fsanitize=undefinedдо налаштувань збірки (CFLAGS/CXXFLAGS) у ваших тестових та налагоджувальних збірках. - Регулярно запускайте тестовий набір програм, зібраних з цим прапорцем, для виявлення прихованих дефектів.
- Звертайте увагу на діагностичні повідомлення, які генерує UBSan, та виправляйте код згідно з отриманими попередженнями.
Виявлення помилок коду через UndefinedBehaviorSanitizer у GCC 4.9
Інтеграція інструментів на кшталт UBSan у процес розробки дозволяє виявляти приховані помилки на ранніх етапах, що значно знижує вартість виправлення дефектів у продуктивному середовищі. Для розробників та керівників проектів це означає підвищення якості коду, стабільності програмного забезпечення та зменшення кількості вразливостей, які можуть бути використані зловмисниками.
Практичний крок: Впровадьте використання прапорця -fsanitize=undefined у ваші CI/CD процеси. Зверніться до Softline за послугами з налаштування процесів розробки та тестування, щоб інтегрувати сучасні інструменти аналізу коду у ваш цикл створення ПЗ.
Використані джерела
- gcc.gnu.org (gcc.gnu.org)
- gcc.gnu.org (gcc.gnu.org)