mirror of https://github.com/vee1e/GDB-UI - GDB stands for GNU Debugger. It's a powerful and popular deb
Find a file
2025-02-20 18:52:37 +05:30
.github minor changes 2024-06-30 17:07:25 +05:30
gdbui_server enhancment: connect every icon with server according their orientation 2024-08-21 22:08:05 +05:30
webapp changing favicon 2025-02-06 13:30:09 +05:30
docker-compose.yml Added docker file 2024-06-22 14:49:21 +05:30
LICENSE Initial commit 2024-02-12 05:55:06 +11:00
README.md Update README.md 2025-02-20 18:52:37 +05:30

GDB-UI

Build Status License: MIT Contributions Welcome

GDB-UI is a modern, web-based user interface for the GNU Debugger (GDB) that enhances your debugging experience. By integrating GDBs 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

  1. Ensure Docker and Docker Compose are installed on your machine.

  2. 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

  1. Navigate to the gdbui_server directory:

    cd gdbui_server
    
  2. Install required Python packages:

    pip install -r requirements.txt
    
  3. Run the backend server:

    python main.py
    

Client Setup

Manual Client Setup

  1. Navigate to the webapp directory:

    cd webapp
    
  2. Install the necessary dependencies:

    npm install
    
  3. Start the client application:

    npm run dev
    

⚙️ Run in Development Mode

For a streamlined development workflow:

  1. Server: Ensure the Python backend is running in development mode.

  2. Client: Run the React development server with hot-reloading enabled.

  3. 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-ui or bugfix/fix-variable-display).


🔄 Testing

  • Frontend: Run tests using Vite. Navigate to the webapp directory and execute:

    cd webapp
    npm run test
    
  • Backend: Execute backend tests by navigating to the gdbui_server directory 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:

  1. Fork the repository: https://github.com/c2siorg/GDB-UI

  2. Clone your fork:

git clone https://github.com/your-username/GDB-UI.git
  1. Create a new branch:
git checkout -b feature-or-bugfix-name
  1. Make your changes and write clear, descriptive commit messages.
  2. Push your branch to your fork:
git push origin feature-or-bugfix-name
  1. Open a pull request: on the main repository with a detailed description of your changes. For further details, refer to our CONTRIBUTING.md.

📜 Resource


📜 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!

Maintained with passion by the GDB-UI team.