Text Editors
- Visual Studio Code (VS Code): A cross-platform, feature-rich code editor with intelligent completions (via Language Server Protocol), integrated terminal, and extensive plugins for languages like C/C++, Python, Rust, and Go. Ideal for streamlined coding and debugging. Install via
sudo apt install code.
- Vim/Neovim: Highly customizable, keyboard-driven editors suitable for advanced users. Neovim offers modern enhancements while maintaining Vim’s efficiency for text manipulation.
- Sublime Text: Known for its speed and plugin ecosystem, it supports multiple programming languages and provides a distraction-free interface for focused development.
Version Control Systems
- Git: The de facto standard for distributed version control, enabling code tracking, branching, and collaboration. Pair with GitLens (VS Code plugin) for enhanced visualization (e.g., git graphs, code authorship) and GitHub/GitLab integration. Core commands include
git init, git add, git commit, and git push.
Build Tools
- GCC (GNU Compiler Collection): A powerful compiler suite for C, C++, and other languages, essential for compiling and linking source code into executable programs.
- Make/CMake: Automate build processes.
Make uses Makefiles for straightforward compilation, while CMake generates platform-specific build files (e.g., Makefiles, Ninja files) for complex projects.
- cargo-deb: A Rust tool to create Debian packages from Rust projects, simplifying distribution and integration with Debian-based systems.
Debugging & Performance Tools
- GDB (GNU Debugger): A command-line debugger for C/C++ that supports breakpoints, stack tracing, and variable inspection. Use
gdb ./program to start debugging and break main to set entry points.
- Valgrind: Detects memory leaks, illegal memory access, and threading issues. Run with
valgrind --leak-check=full ./program for comprehensive memory analysis.
- strace + perf: System-level troubleshooting tools.
strace traces system calls and signals (strace -f ./program), while perf profiles CPU performance and generates flame graphs (perf record -g ./program; perf report).
- tmux: A terminal multiplexer that enables session persistence (tasks continue after SSH disconnection), split panes (horizontal/vertical), and efficient window management. Use
tmux new -s dev to create a session and Ctrl+b % to split vertically.
Package & Dependency Management
- APT (Advanced Package Tool): The default Debian package manager for installing, updating, and removing software. Use
sudo apt update to refresh repositories and sudo apt install <package> to install tools.
- apt-get: A lower-level package manager for scripting and advanced tasks (e.g.,
apt-get install -y <package> for unattended installs).
Terminal & File Management
- Terminal: The default terminal emulator for executing system commands. Customize with themes or switch to alternatives like Tilix for multi-pane support.
- Double Commander: A dual-pane file manager that enhances file operations (copy/move/delete) with a familiar two-panel interface, ideal for managing project files efficiently.