| .github | ||
| gdbui_server | ||
| webapp | ||
| docker-compose.yml | ||
| LICENSE | ||
| README.md | ||
GDB-UI
GDB-UI is a modern, web-based user interface for the GNU Debugger (GDB) that enhances your debugging experience. By integrating GDB’s powerful capabilities with an intuitive design, GDB-UI simplifies the process of monitoring program execution, inspecting variables, and setting breakpoints. Perfect for developers working with C, C++, Ada, and more, our tool is designed to streamline your development workflow.
Repository: https://github.com/c2siorg/GDB-UI
🌟 Overview
GDB-UI provides an accessible interface to the robust GNU Debugger. It empowers developers by offering real-time debugging, breakpoint management, and variable inspection through an elegant web-based platform. Whether you are developing complex systems or working on small projects, GDB-UI is built to improve productivity and debugging efficiency.
🚀 Key Features
- Modern Web Interface: Sleek and user-friendly design for ease of use.
- Full GDB Integration: Access the complete functionality of GDB.
- Real-Time Debugging: Monitor and control program execution in real time.
- Multi-Language Support: Ideal for C, C++, Ada, and potentially other languages.
- Extensible Architecture: Customize and extend the tool with plugins and additional modules.
- Comprehensive Testing: Frontend and backend test suites to ensure stability.
- Docker and Manual Setup: Multiple installation options to suit your environment.
🛠 Prerequisites
Before getting started, ensure you have the following installed:
- Node.js: Version 18
- Python: Version 3.10
- Docker & Docker Compose: (Optional, for containerized setup)
- Git: For source control management
⚡ Getting Started
Follow these instructions to quickly set up and begin using GDB-UI. Choose between the Docker-based or manual installation method based on your preference.
🔧 System Architecture
GDB-UI is built with a clear separation of concerns:
GDB-UI/
├── gdbui_server/ # Backend services
├── webapp/ # Frontend interface
-
Backend (Python Server):
Handles communication with GDB, processes debugging commands, and serves APIs.
-
Frontend (React Client):
Provides the user interface, visualizes debugging data, and interacts with the backend via REST APIs and WebSockets.
- The modular architecture ensures that both components can be developed, tested, and scaled independently.
📖 Installation
There are two primary methods to install GDB-UI: using Docker or setting up the components manually.
Server Setup
Docker Setup
-
Ensure Docker and Docker Compose are installed on your machine.
-
Run the following command:
docker-compose up
This command builds and starts both the frontend and backend services. The application will be available at http://localhost:3000.
Manual Server Setup
-
Navigate to the
gdbui_serverdirectory:cd gdbui_server -
Install required Python packages:
pip install -r requirements.txt -
Run the backend server:
python main.py
Client Setup
Manual Client Setup
-
Navigate to the
webappdirectory:cd webapp -
Install the necessary dependencies:
npm install -
Start the client application:
npm run dev
⚙️ Run in Development Mode
For a streamlined development workflow:
-
Server: Ensure the Python backend is running in development mode.
-
Client: Run the React development server with hot-reloading enabled.
-
Live Reload: Any changes to the code will automatically update the running application, allowing for efficient iterative development.
⚙️ Development Workflow
To maintain a high standard of code quality and collaboration, please adhere to the following development workflow guidelines.
Branching Strategy
-
Main Branch: Always reflects the production-ready state.
-
Feature Branches: Create separate branches for new features or bug fixes.
-
Naming Convention: Use clear, descriptive branch names (e.g.,
feature/add-breakpoint-uiorbugfix/fix-variable-display).
🔄 Testing
-
Frontend: Run tests using Vite. Navigate to the
webappdirectory and execute:cd webapp npm run test -
Backend: Execute backend tests by navigating to the
gdbui_serverdirectory and running:cd gdbui_server python -m unittest discover -s tests
Note: Ensure that all tests pass before merging any changes.
📈 Production Deployment
For production deployment, follow these guidelines:
-
Docker: Use Docker Compose to deploy a stable environment.
-
CI/CD Pipeline: Integrate with our CI/CD pipeline for automated testing and deployment.
🛠 Linting and Formatting
## for frontend
cd webapp
npm run lint # for check lint
npm run lint:fix # for fix lint
npm run format:check # for check format
npm run format # for fix formatting
## for backend
cd gdbui_server
make lint
make format
and if you want to do mannually
ruff check --fix . # for Run Ruff for Linting & Auto-Fixing
flake8 . # to check the linting errors and warnig
ruff format . # Format Code with Ruff
🤝 Contributing
We value contributions from the community! To contribute to GDB-UI, please follow these steps:
-
Fork the repository: https://github.com/c2siorg/GDB-UI
-
Clone your fork:
git clone https://github.com/your-username/GDB-UI.git
- Create a new branch:
git checkout -b feature-or-bugfix-name
- Make your changes and write clear, descriptive commit messages.
- Push your branch to your fork:
git push origin feature-or-bugfix-name
- Open a pull request: on the main repository with a detailed description of your changes. For further details, refer to our CONTRIBUTING.md.
📜 Resource
- Official GDB Documentation: GDB Manual
- React Documentation: React Docs
- Python Documentation: Python Docs
- Docker Documentation: Docker Docs
- Figma Design Prototype: View Design
📜 License
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
📞 Support
If you need help or have any questions, please consider the following support options:
- GitHub Issues: Report bugs or request features via GitHub Issues.
- Community Discussions: Participate in discussions on our GitHub Discussions page.
Thank you for choosing GDB-UI. We hope this tool enhances your debugging workflow and accelerates your development process. Happy debugging!