RemedyBG: Replacing the Visual Studio Debugger
remedybg.handmade.network
remedybg.handmade.network
Emacs and Eclipse both integrate GDB via the MI interface. LLDB supports it as well. https://sourceware.org/gdb/current/onlinedocs/gdb/GDB_002fMI...
What is the advantage of the debug adapter protocol against the existing debugger--editor integration protocols?
MI, on the other hand, was originally just an API to use gdb programmatically, and was later repurposed by others simply because it was already implemented by other tooling, dealing with its gdb-specific idiosyncrasies being the path of least resistance.
https://kichwacoders.com/2017/08/02/gdbs-mi-is-not-a-debug-p...
As a consequence, DAP is much easier to work with from the IDE side, and it's easier to implement an adapter, as well. Looking at this table - even ignoring all the Microsoft-made ones - how many of the languages listed have a MI debugger implementation?
https://microsoft.github.io/debug-adapter-protocol/implement...
On the tooling side, Emacs and Eclipse are both covered:
https://microsoft.github.io/debug-adapter-protocol/implement...
Still, for native debugging specifically, it's a good point that on the IDE side, MI is currently better supported. So implementing that first would make more sense in terms of lighting up more IDEs, at the price of a somewhat more complex implementation. DAP can be implemented on top of MI - this is exactly what the VSCode C++ debug adapter does.
I, for one, fully support the handmade philosophy: RemedyBG doesn't use any third-party libraries (x). This includes Window's own Debug Help Library (DbgHelp), Debugger Engine (DbgEng), or even a library for reading symbol files (PDBs). I played around with these libraries to judge their effectiveness. Yes, using them can get you 80% of the functionality you need very quickly but after that you are forever 20% away from sweetness. And besides, Visual Studio is using these libraries and the whole point was to get away from this beast!
Then later:
There are a lot of interesting features coming down the pipe after realizing the wealth of information that compiler emits (and that Visual Studio hides from us).
EDIT: Not sure why I got down-voted for this. It's straight from some of the folks I know who started using it. You may not like their reasoning but you can reply instead of bury.
So if you're in that workflow, it's a shame that for debugging you have to open up the beast, wait for it to load, wait while it figures out what .csproj files have changed, wait while it uses all your system RAM, wait while it notifies you about all the Azure plugin updates, wait while it thinks a little more about who knows what, just to start a debugging session. That's where having one tool that does one job great comes in handy.
Not to mention, it does seem like a great deep-dive project to learn about things. In my experience it's projects like these that really increase your dev skills. High-level tech like writing todo apps in a million different web frameworks doesn't.
If the debugger is written just for the heck of it, I can totally get behind this reason. No amount of reading can replace practical experience.
having an answer that would let me escape from the arcanities of visual studio in a corporate environment would be a joy
I've been watching the development of this, here's their main points:
It's slow. Stepping through code and updating watches can take a few seconds. Which really does slow you down when you're doing a lot of work with it. It's ginormous, you shouldn't need a huge program with tons of dependencies to debug things. And finally, it's primitive. It usually works for what it does but it would be nice for a debugger to be more flexible and allow things like: Displaying blocks of memory as images, allowing custom display visualization, and navigation of your own data structures, or charting how a value changes over time. Debugger functionality has been pretty stagnant for at least a decade. Also plugging in project specific debugging tools like serialization and custom tools would be neat.
Do you use ReSharper?
It’s been a while since I used either ReSharper or Visual Studio, but I remember ReSharper being like lashing a half-ton Snap On tool chest to your car.
Also, VS is much more extensible than people tend to give it credit for. So even if the advanced debugging features are not avaiable out of the box, you can add them.
I am not a VS fan boy, but compared to the competition, there are some things where it is absolutely worth its money (in other cases, it isn't).
If you think the watch is slow it's probably because one of the expressions you are trying to evaluate is slow (eg getters doing more computation behind the scenes than you think). If you just watch plain data it's blazing fast.
I don’t have VS handy right now; maybe someone else can weigh in...
Edit: On first glance, this looks informative: https://stackoverflow.com/questions/3438489/using-windbg-fro... . Be sure to read all the answers.
VS Only: rich extensions for languages. GUI debugging(wpf visualization etc.)
Windbg: kernel debugging (drivers etc). Scripting. Better command line interface. Fully expose sos. Dump corrupted heap objects. Better support for C++
At higher levels, VS is a much nicer experience. If you ever need to get down to lower levels, especially windows libraries and services, the power of the ntsd/windbg engine and its extensions make it much more useful. Knowing it also helps when you eventually need to use KD.
The sky is the limit and I am sure someone could sit down and reinvent debuggers which basically haven't been evolving for decades.
Even though RemedyBG is in infancy and there's plenty of work ahead, it has the ability to surprise us tomorrow with features that haven't been in any other debuggers.
Also check out http://www.radgametools.com/debug.htm
> Also, for the user interface, I am using Dear ImGui which has been a joy to use.