Post

C/C++ backend engineer tools to be familiar with.

As a C/C++ backend engineer, here is a list of tools you should be familiar with to effectively develop, debug, test, and maintain backend systems.

Development Tools

  1. Compilers:
    • GCC/Clang: Essential for compiling C/C++ code on Linux and macOS.
    • MSVC (Microsoft Visual C++): For compiling on Windows.
  2. Build Systems:
    • CMake: A cross-platform build system that generates native makefiles and workspaces.
    • Make/Automake: For automating the build process on Unix-like systems.
    • Ninja: A small build system focusing on speed.
  3. Version Control:
    • Git: For version control, collaboration, and code management.
    • GitHub/GitLab/Bitbucket: Platforms for hosting Git repositories.

Debugging Tools

  1. GDB (GNU Debugger): The standard debugger for C/C++ on Unix-like systems.
  2. LLDB: A modern debugger from the LLVM project, often used with Clang.
  3. Valgrind: For memory debugging, memory leak detection, and profiling.
  4. AddressSanitizer/MemorySanitizer: Tools to detect memory corruption and leaks.
  5. strace/ltrace: For tracing system calls and library calls.
  6. Perf: A performance profiling tool on Linux.

Integrated Development Environments (IDEs)

  1. Visual Studio: Popular for C++ development on Windows.
  2. CLion: A cross-platform C/C++ IDE by JetBrains.
  3. Eclipse CDT: An open-source IDE for C/C++ development.
  4. VS Code: With the right extensions, it can be an effective C/C++ editor.

Static Analysis Tools

  1. Cppcheck: A static analysis tool for C/C++ code.
  2. Clang-Tidy: Part of the LLVM project, it offers linting and static analysis.
  3. Coverity: A commercial tool for finding defects in C/C++ code.

Libraries and Package Managers

  1. Boost: A collection of C++ libraries that complement the standard library.
  2. Conan: A C/C++ package manager.
  3. vcpkg: A Microsoft-supported C/C++ library manager.

Continuous Integration/Continuous Deployment (CI/CD)

  1. Jenkins: Automation server to support CI/CD workflows.
  2. Travis CI: Continuous integration service often used with GitHub.
  3. GitLab CI: Built-in CI/CD for GitLab repositories.

Testing Frameworks

  1. Google Test (gtest): A popular C++ testing framework.
  2. Catch2: A modern, C++-native, header-only testing framework.
  3. CppUnit: A unit testing framework for C++.

Documentation Tools

  1. Doxygen: A documentation generator for C/C++.
  2. Sphinx: While often used with Python, Sphinx can also document C/C++ projects.

Networking Tools

  1. Wireshark: A network protocol analyzer.
  2. tcpdump: A packet analyzer for command-line.

Containerization and Virtualization

  1. Docker: To create isolated environments for building and testing.
  2. Vagrant: For creating and managing virtualized development environments.

Profiling Tools

  1. gprof: GNU profiler for analyzing program performance.
  2. Valgrind (Callgrind): For profiling program performance.

Logging

  1. spdlog: A fast C++ logging library.
  2. log4cplus: A logging library for C++.

Database Tools

  1. MySQL/PostgreSQL Client Libraries: For interfacing with databases.
  2. SQLite: A lightweight, file-based database often used in embedded systems.

Code Formatters and Linters

  1. Clang-Format: For formatting C/C++ code.
  2. Uncrustify: A highly configurable code beautifier for C/C++.

Shell and Scripting

  1. Bash: Basic knowledge for scripting in Unix-like environments.
  2. Python/Perl: For writing scripts to automate tasks.

Mastering these tools will significantly boost productivity and efficiency as a C/C++ backend engineer.

This post is licensed under CC BY 4.0 by the author.