Какие утилиты используешь?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Утилиты для C/C++ backend-разработки
Профессиональная backend-разработка требует целого набора инструментов. Расскажу о тех, без которых я не представляю себе свою работу.
Компиляция и сборка
GCC (GNU Compiler Collection) — мой основной компилятор для production. Быстрый, стабильный, поддерживает все стандарты C++ до C++23. Часто использую флаги вроде -Wall -Wextra -Wpedantic -std=c++17 для максимальной строгости.
Clang/LLVM — альтернатива, часто с лучшей оптимизацией и сообщениями об ошибках. На macOS это default компилятор. Использую для профилирования и sanitizers.
CMake — стандарт для управления проектами. Кроссплатформенность, удобство, экосистема — без CMake трудно представить серьёзный проект.
cmake_minimum_required(VERSION 3.16)
project(my_backend)
set(CMAKE_CXX_STANDARD 17)
add_executable(server main.cpp)
target_link_libraries(server pthread)
Make или Ninja — для быстрой сборки. Ninja часто быстрее, особенно при инкрементальных сборках.
Отладка и анализ
GDB (GNU Debugger) — классический отладчик. Breakpoints, step-by-step выполнение, inspection переменных, backtraces. На Linux это first-line tool.
gdb ./my_app
(gdb) break main
(gdb) run
(gdb) next
(gdb) print variable
Valgrind — для поиска утечек памяти, invalid reads/writes. Абсолютно необходимо при работе с ручным управлением памятью.
valgrind --leak-check=full --show-leak-kinds=all ./my_app
AddressSanitizer (ASan) — встроенный в Clang/GCC инструмент, обнаруживает buffer overflows, use-after-free, утечки памяти. Быстрее Valgrind.
g++ -fsanitize=address -g myapp.cpp
ThreadSanitizer (TSan) — для поиска race conditions в многопоточном коде. Спасает часы отладки.
Профилирование
perf — Linux инструмент для профилирования CPU, cache misses, context switches. Показывает, где программа тратит время.
perf record ./my_app
perf report
Flamegraph — визуализация профиля, показывает стек вызовов. Быстро видны узкие места.
gperftools (Google Performance Tools) — профайлер памяти и CPU с minimal overhead. Хорош для production.
Качество кода
Clang-Format — автоматическое форматирование кода. Единообразный стиль во всём проекте.
clang-format -i *.cpp
Clang-Tidy — статический анализ, находит антипаттерны, предлагает улучшения.
clang-tidy myapp.cpp -- -std=c++17
cppcheck — ещё один статический анализатор, ловит потенциальные баги.
IWYU (Include What You Use) — проверяет, что все включаемые заголовки действительно используются.
Тестирование
Google Test (gtest) — стандартный фреймворк для unit-тестов в C++.
#include <gtest/gtest.h>
TEST(MathTest, Addition) {
EXPECT_EQ(2 + 2, 4);
}
Catch2 — альтернатива, более современный синтаксис.
Mock (gmock) — встроена в Google Test, для мокирования зависимостей.
Version Control & CI
Git — обязателен, но это не утилита, это культура.
GitHub Actions / GitLab CI / Jenkins — для автоматизации сборки, тестирования, деплоя.
Утилиты среды выполнения
strace — трассирует системные вызовы, помогает понять, что программа делает на уровне ОС.
strace -e trace=network ./server
ltrace — аналогично для library вызовов.
ldd — показывает динамические зависимости исполняемого файла.
Вывод
Эти инструменты — мой ежедневный набор. Каждый решает конкретную задачу: GCC/Clang компилируют, GDB отлаживает, Valgrind/ASan ищет bugs, perf показывает bottlenecks, gtest обеспечивает качество. Владение этими утилитами отделяет junior от senior разработчика.