Pro tip when you start a new project or get handed one: start by "wasting" time setting up a good debugging environment. So you can set a break point, click one button and BOOM, you're there.
Whatever time you "waste" on that will pay you dividends on a daily basis for every single day you work on that project. Both in the form of productivity and happiness (it's a form of self-care too!)
There is a simple concept that shows you how important, vast and different from programming, debugging is. Troubleshooting something (especially the investigation part) is an entirely different skill set from creating something. They work in opposite directions.
During design, you're assembling various components to get a desired outcome. During troubleshooting, you start from an observed anomaly and work your way back to the component that's faulty. While this difference may sound insignificant, the reasoning (mental algorithms) we employ in each direction are entirely different[1].
The ability to reason in both directions is a force multiplier at any stage of the project. This is true in any field of engineering. We need to put significantly more effort into learning debugging skills. Debuggers like GDB also reflect this complexity.
[1] If you're familiar with systems reliability engineering, you can see this in action in FTA (Fault Tree Analysis) and FMEA (Failure Mode Effects Analysis).
Totally. "Debugging is like being the detective in a crime movie where you are also the murderer"
I would suggest spelling out the purpose of the book - is it about /using/ debuggers or /writing/ one? The first paragraph implies the first, but the 100 lines of python or 10k lines of C implies the latter.
Also, on ios16, the top menu is unclosable - once it’s open the only apparent way to collapse it is to pick an option or refresh the page. Edit: the sections under news such as the title and paragraph for ‘the debugging book’ jan 14 2025 are white text on a white bg also.
I’m looking forward to reading this book though!
Does Python without GIL have validator/sanitizers, scheduling and recording for non-determinism capabilities? If yes, then either Python is lacking or these methods are also missing.
In dark mode, the text towards the bottom of the page renders as white on white ...
Make constructive suggestions, rather than snide comments.