GUIs just being front-ends for a CLI tool is a horrible idea. This is why most git GUIs fail so terribly. I have seen too many of those where all the buttons were just replacements for CLI calls. If it is just a front-end for a CLI, then why the heck not just use the CLI?
A good git GUI has not been designed to just wrap the CLI. Instead, it works with the structure of git (commits, branches, tags, etc), and builds around those from the ground up. Only once the functionality has been designed should the question arise: What CLI commands do we need to implement this?



I have barely any experience with raw gdb, but debugging is something that allows for a lot of contextual actions. Even just placing a breakpoint is simpler if you can click the line instead of copy-pasting the line number. But also evaluating expresssions while on a breakpoint, or a graph with an overview of all threads. I doubt these are straight-forward commands in gdb, and if they are, you need to figure out the exact parameters (like line number).
Furthermore, I have tried raw gdb once, and got super confused as to what I was supposed to do or look at. Yet every IDE makes it trivial to use debuggers. Learning the options available to you is much easier in a well designed GUI.