minoca / os

Minoca operating system
Other
2.72k stars 229 forks source link

Cross-platform GUI debugger #101

Open test9753 opened 7 years ago

test9753 commented 7 years ago

The current GUI debugger seems to be written specifically for Windows OS. Is it possible to have a cross-platform (Windows/Linux/macOS) GUI debugger?

evangreen commented 7 years ago

Hi test9753. Probably the first step would be having the command line version be cross-platform. There's just a little work left to allow non-Windows machines to access and configure a serial port.

I would love a cross-platform GUI debugger. The thing that holds me up is that right now the OS repository has no external dependencies except for the compiler and iasl (the ACPI compiler). I'm hesitant to add a new dependency on something like Qt or some other cross-platform GUI framework, as it makes the build environment more difficult to set up and maintain.

It also occurs to me that the debugger is mostly a text-based tool. I wonder if we could get 90% of the way there with some ncurses-like frames/panes for displaying the source and/or profiling info. Thoughts?

test9753 commented 7 years ago

I wonder if the debugger can be written as a web application (for e.g.: Radare2).

Python with Tkinter GUI library comes pre-installed in macOS and is easily installed in linux/*BSD/Windows. The Pyserial library may be useful.

The libui library ("a portable GUI library for C") may be of interest too.

The TUI mode in gdb (based on ncurses) never worked reliably for me. While the gdb interface can be pimped up (for e.g.: gdb-dashboard), its still not very flexible/usable for me.

test9753 commented 7 years ago

Found this browser-based frontend to gdb: gdbgui

evangreen commented 7 years ago

I think I like that gdbgui approach. The command line version has the primary functionality, and then a separate GUI wrapper app interacts with the command line. Poking around gdbgui turned me on to GDB's "machine interface" mode, which sounds like a great way to create a GUI wrapper interface.

I probably won't be able to get to this anytime soon, but I think the idea is appealing and the approach is sound.