We pay a lot of attention to development tools: we participate in heated debates about editors (Vim or Emacs?), We spend a lot of time customizing the IDE to our taste, and carefully choose programming languages ββand libraries that are getting better and more convenient every day. However, one category can be distinguished here, which for some reason remains undeservedly forgotten: debuggers have not changed much over the last decade, although they are still one of the basic tools for catching errors and navigating code.
Image: Timothy Dykes @timothycdykes, unsplash.com
More often than not, we prefer to quickly add a couple of print
s instead of putting a breakpoint in the right place and walking through it with a debugger - and the question "why?" does not cease to amuse me - after all, logs and print
s provide limited information and do not allow interactive interaction with the running process (and debuggers can even work with "dead" processes!).
One of the main reasons I see is the lack of significant progress in the development of debuggers.
GDB , . , 4K, - , . , IDE VS Code ( , JavaScript), - - .
. Rust, β , , (, Make 1976 ).
: Rust "" β , , . " ", , . , , β , .
. GDB LLDB, : (Go Rust) , C C++. β , β , . β Go Java LLDB.
, ? , Rust! , . Delve , ( β Go) , x86-64 Windows/Linux/macOS.
, , , . : - , ( - ). REPL Jupyter ( , , ).
, , , , , .
, Headcrab, . : , , . , β - .
If you are interested in participating in the development, we will be happy to support you, even if system programming is still new to you. You can also help if you share your debugging experience: what problems did you encounter, what tools do you use, and what would you like to see in the new debugger?
Thank you for reading this text.