Seer – a GUI front end to GDB for Linux
github.com
github.com
Here a quick tutorial from some other HN poster the other day: https://news.ycombinator.com/item?id=33032827
I wish the best of luck to the authors of this; it seems they've already done a majority of the GDB/MI work, albeit largely by substring searches, and likely not handling the tons of edge-cases GDB/MI gives.
I have used the equivalent feature in DDD a lot.
The StructVisualizer can follow *pointers. The default method is to view the struct/class that is pointed at in the same visualizer.
You can RMB click on the pointer in the StructVisualizer to open a second visualizer for that pointer.
I know this is a bit aways from how DDD worked. DDD has a nice way of "graphing" the struct/class tree, including any referenced struct/class that come from pointers.
Who knows, it may be in my plans :^)
As other comments have noted "at least a few words how it's different ... would be nice."
Maybe you and I disagree about what is or is not neat. That's okay.
In general people who click on "a GUI frontend for gdb" might be interested in another front end. However, I have no knowledge, nor I endorse any of them. For what I know they both might be pretty bad, but it is nice to see people are trying to improve gdb's usability.
Having not found a good frontend GUI I eventually learned how to use gdb on its own, with its tui (a kind of console based multi-window "gui") as well as I've used emacs's gdb-mode a lot. Both are huge time savers and they are both really fast. To be fair the only thing that I can't do with them is to explore variables/memory via mouse point and click(one has to use the keyboard a lot) and I find at least for me my mind-mouse-point-and-click connection is a lot more seamless than mind-keyboard-command-type.
I used it to debug an embedded project last as I hated the debugger in VS Code (and VS code itself). It works great with terminus if you want to look at logs while debugging ..
Tui looks very similar to the screenshot shown on cgdb's webpage. I too use gdb mostly with embedded devices (over swd with openocd). I like to have at least 3 windows with source code, disassembly and memory/variables/watches.
Funnily enough, no GUI attempts to solve that issue.
[1] https://wiki.gnome.org/Apps/Nemiver
[2] https://builder.readthedocs.io/en/latest/projects/debugging....
*cries in vim*
- In CLIs the function (what the software does) is more important than the presentation, in GUIs the usability expectations are higher.
- GUIs need constant cosmetic updates over the years to keep up with design fads
- GUIs in general require more work and a good eye to be considered useful
Linux market dynamics does not have such a "generous" vendor that might recoup their IDE development costs by selling other stuff.
- Historically, the Linux user base has been smaller
- GUIs are seen with contempt by a small but influent portion of the Linux crowd
- Linux users are less willing to pay for software because so much is available for free
- XCode has a trillion dollar corporation behind it
- The graphical debugger projects on Linux pretty much only have volunteers (occasionally) working on them, and none has picked up enough traction to build a significant following and justify any kind of real investment
Also, it has never really been a pressing issue since GDB, LLDB, and tools like RR are perfectly usable from the command line once you learn them.
Am I missing out on important functionality?
Then Microsoft provides an adapter to convert GDB/MI to their standard Debug Adapter Protocol. I think their adapter is unfortunately closed source but there appears to be a third party open source one too.
Where?
Though I'm not 100% sure it is using the DAP.
In the case that it is, I noticed that tromey had posted some patches for an initial implementation of MS-DAP to the gdb-patches list not too long ago.
https://sourceware.org/pipermail/gdb-patches/2022-September/...
I get tons of compilation errors.
/home/user/seer/src/SeerGdbConfigPage.cpp:15:78: error: ‘idClicked’ is not a member of ‘QButtonGroup’
15 | QObject::connect(styleButtonGroup, QOverload<int>::of(&QButtonGroup::idClicked), this, &SeerGdbConfigPage::handleDprintfButtonGroup);
| ^~~~~~~~~
make[3]: *** [CMakeFiles/seergdb.dir/build.make:323: CMakeFiles/seergdb.dir/SeerGdbConfigPage.cpp.o] Error 1Can you provide the version of QT you're using? I suspect it is old. Seer needs QT 5.15.2 or newer.
% qmake --version
% qmake-qt5 --version
# lsb_release -a
Ubuntu 20.04.5 LTS
# qmake --version
QMake version 3.1
Using Qt version 5.12.8 in /usr/lib/x86_64-linux-gnu
# qmake-qt5 --version
qmake-qt5: command not found
# apt-file search qmake-qt5
qt5-qmake-bin: /usr/share/man/man1/qmake-qt5.1.gz
# /usr/lib/qt5/bin/qmake --version
QMake version 3.1
Using Qt version 5.12.8 in /usr/lib/x86_64-linux-gnu
I don't recall doing anything special to install Qt on my box, likely something along the lines of: # apt-get install qt5-default
So in all likelihood, I have the standard Qt5 that comes with Ubuntu 20.04.5, still a somewhat popular and widely used Ubuntu version.Hope this helps.
You can move the discussion to the github page. :^)
Standard and traditional Qt type headaches, where between many different major versions and deprecated stuff and newly introduced APIs between minor versions, compiling and linking software that relies on Qt is a complete crapshoot.
Also, since you don't provide statically linked binary releases or a flatpak or an appimage, you might want to consider making the source dependencies of your software explicit in the Readme (like e.g. the minimum version of Qt5 required, or the qt5Charts dev libs, definitely not something everyone has installed on their computer).
Just look at the keys they're right there, conveniently ergonomically placed
I've been doing it for years. It works great
People use vim say, because the computer when they were 15 didn't run emacs well and now they're 45 and because of this fairly unrelated fact from 1992 they're still doing the same thing.
I try hard to question these assumptions and move on. I use USB foot pedals as quasi-mode keys and sliders and knobs of MIDI controllers to do things like go through browser tabs, window stacks, file hierarchies, scroll through files...
Just my style.
I've thought about trying voice dictation or using the 6DOF sensors on an old phone maybe for a ZUI interface (say figma) but I haven't explored it yet.
Pulling this off in X requires a lot of esoterica of virtual keyboards and named pipes but it's totally doable. We need to find better ways to interface computers and I'm convinced that will not come by attaching a smartphone to our face (or by groups like MIT media lab either. I've worked with them and I wish it were otherwise).
Also I've been learning emacs, it's actually pretty neat.
GDB itself officially supports Rust, with some gotchas: https://sourceware.org/gdb/onlinedocs/gdb/Rust.html
So, in theory it should work :D