• Stars
    star
    513
  • Rank 83,048 (Top 2 %)
  • Language
    C++
  • License
    Other
  • Created over 11 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Debugging the way it's meant to be done

ProDBG is a new debugger under development that will support a variety of targets and operating systems. Currently it's in very early development and primary focusing on Linux as primary target.

Build status

Build status

Status

As the rewrite of ProDBG (to using Qt in C++) is currently under way no debugging is working currently as everything is being brought up again. At this time C++ will be used for the UI but backends will be able to use different languages (such as Rust) as a C API is provided for this.

Cloning the repository

The ProDBG repository contains submodules. Clone it with git clone --recursive. If you forgot to clone it recursively the first time, from within the cloned repository run git submodule update --init --recursive.

How to compile and build

Latest stable version of Rust (1.36+) needs to be present on the system. We recommend using rustup to install and manage your Rust toolchain(s). There are also other ways to install rustup. If you already have rustup installed but aren't on the latest stable Rust, you can simply run rustup update.

Prequisites

ProDBG requires Qt as it's used for the UI. Go and install the 5.7 version and pick the 64-bit version for your system. You also need to set three env variables: QT5_LIB, QT5_BIN, QT5_INC in order to build the code. See more details for each platform.

macOS

Prequisites

Building the code on macOS requires that Clang is installed on your system. The easiest way to do this is to get Xcode and install the commandline tools.

Rustup

Run: rustup install stable-x86_64-apple-darwin or rustup override add stable-x86_64-apple-darwin

Build

Run: scripts/mac_build_debug.sh

Output

The main execeutable is located at: t2-output/macosx-clang-debug-default/ProDBG.app/Content/MacOS/prodbg

Windows

Prequisites

On Windows Visual Studio 2017 or later is required (2012 or earlier will not work as parts of the code uses C99)

Env variables

Something similar to this

QT5_LIB=C:\Qt\5.12.4\msvc2017_64\lib
QT5_BIN=C:\Qt\5.12.4\msvc2017_64\bin
QT5_INC=C:\Qt\5.12.4\msvc2017_64\include

Rustup

rustup install stable-x86_64-pc-windows-msvc or rustup override add stable-x86_64-pc-windows-msvc

Build

Run: scripts\vcvarsx86_amd64.bat and then scripts\win64_build_debug.cmd

Run

Run: t2-output\win64-msvc-debug-default\prodbg.exe

Linux

Prequisites

Building the code on Linux will require some prerequisites to be installed. Which prerequisites depends on the distribution being used.

For Ubuntu you can use the following:

sudo apt-get update
sudo apt-get install -y libx11-dev libgl1-mesa-dev libgtk-3-dev pkg-config qt515base

ProDBG uses Tundra to build the project the project. Binaries are supplied on macOS and Windows but needs to be built on Linux:

  • git clone https://github.com/deplinenoise/tundra.git
  • cd tundra
  • CXX=g++ make
  • sudo make install

Env variables

These highly depends on how your system is setup. Here are two examples

export QT5_BIN=/usr/bin
export QT5_INC=/usr/include/x86_64-linux-gnu/qt5/
export QT5_LIB=/usr/lib/x86_64-linux-gnu
export QT5_BIN=/opt/qt512/bin
export QT5_INC=/opt/qt512/include
export QT5_LIB=/opt/qt512/lib

Rustup

Run: rustup install stable-x86_64-unknown-linux-gnu or rustup override add stable-x86_64-unknown-linux-gnu

Build

Run: tundra2 linux-gcc-debug

Run

The main executable is located at: t2-output/linux-gcc-debug-default/prodbg

More Repositories

1

minifb

MiniFB is a small cross platform library to create a frame buffer that you can draw pixels in
C
924
star
2

rust_minifb

Cross platfrom window and framebuffer crate for Rust
Rust
887
star
3

dynamic_reload

Dynamic reloading of shared libraries
Rust
351
star
4

rocket

GNU Rocket Git mirror
Lua
107
star
5

bgfx-rs

Rust wrapper for BGFX
Rust
84
star
6

Score

Score! is a new programming language based on the ideas from GOAL
Common Lisp
46
star
7

Rute

Rute is a UI library implemented on top of Qt
Rust
39
star
8

evfs

Virtual File System written in Rust
Rust
37
star
9

remotery-rs

Realtime CPU Profiler with web browser viewer
Rust
31
star
10

AmigaHunkParser

Parser written in C for Amiga Hunk (executable) files
C
13
star
11

cfixed-string

Pass Rust strings to C with potentially not needing heap allocation
Rust
13
star
12

ps2dev_tools

Binaries of the ps2dev toolchain (for win32 and osx)
C
12
star
13

remotelink

Remote running executables on a Linux style system
Rust
9
star
14

wrui

C wrapper for UI libraries (like Qt, wxWidgets, dear imgui) with a common C API
Lua
8
star
15

sico

SICO - SImple COmpute
Lua
8
star
16

Arika

Arika is a cross-platform UI library written in C and Lua
C
7
star
17

usb2snes

Rust crate for talking with SD2SNES over USB
Rust
6
star
18

csimd

Cross platform SIMD intrinsics in C
5
star
19

bgfx-sys

Rust FFI bindings for bgfx
C
5
star
20

m68k_cpu_tester_api

Uses data from the (Win)UAE cpu test generator
C
4
star
21

flowi

Flowi is a research UI aimed at speed, good looks and ease of use
C
4
star
22

amiga_hunk_parser

Parses Amiga exceutable (hunk files) in Rust
Rust
4
star
23

text_render

Fiddling around with Text Rendering to make something that looks less crap
Rust
4
star
24

modland_hash

Rust
3
star
25

68k_disassemble_gen

68k disassembler for C made in Rust
Rust
3
star
26

dotvim

vimconfig files and plugins
Vim Script
2
star
27

prodbg_addons

Addons/Plugins to ProDBG
C++
2
star
28

ssagen

Playing around with SSA form
C
2
star
29

wrui_rust

Rust wrapper for WRUI
Rust
2
star
30

prodbg-web

Webpages for ProDBG
JavaScript
2
star
31

68k_documentation_gen

Generate documentation including cycle tables for Motorola 680x0
C
2
star
32

docking_system

Docking system based on the i3wm code
Lua
1
star
33

apigen

Basic API/data description lang + parser that can be used for generating API/data interfaces, etc
Rust
1
star
34

extract-opencl-docs-dash

Script that is used for generating OpenCL docs for Dash
Python
1
star
35

dms-rs

DMS (Amiga Disk Masher System) unpacker written in Rust
Rust
1
star
36

bgfx-rs-bindgen

Rust binding generator for bgfx
Rust
1
star
37

IMCocoa

Experimental project to try to do Immediate mode GUI in Cocoa (Mac OS X)
Objective-C
1
star
38

flowi_rust

Lets do Flowi in Rust instead
1
star
39

prodbg-third-party

Third Party libs used by ProDBG
C++
1
star
40

scintilla

Scintilla is a free source code editing component.
C++
1
star
41

anidb-rs

Rust crate that makes using the AniDB API easier
Rust
1
star
42

fx68x_verilator

verilator testing of fx68k
C++
1
star