All the debugging tools in the world doesn’t beat an excellent sense of intuition and putting that print statement exactly where it needs to be.
As linus says, if you need to use a debugger your code is too complicated
He works on Linux where he controls the whole stack down to the metal and I love that for him, but other people have to call library code, and them debug that if it doesn’t work as they thought it would.
Well then obviously if you use libraries, your code is too complicated
Yep that’s why I refuse to use standard libraries. It just makes my code too complicated…
Tell that to my employer
Right, the amount of times I’ve had to put breakpoints in Django/DRF code to figure out what’s causing that weird undocumented behavior is concerningly large
Dude can pry my debugger from my cold, dead hands.
The problem is that sometimes it’s not your code that you’re debugging
echo __LINE__ . "Moo\n";
Honestly if you’re not including the LoC in your debug statement I don’t even fucking understand you.
But yeah, senior devs know the power of breadcrumb debugging (because most of us were deeply scarred by
gdb
).Did GDB do something bad at some point?
Yes. It breaks points.
No
That’s
console.trace()
for all you JS devs out there.I always combine that with objects with the shorthand notation. So you always know what variable has what value without having to remember in what order you printed the variables.
console.trace({i, list}); // {i: 1, list: [0, 1, 2]}
I also use group and groupend to nicely collapse different logs. and table when i’m feeling funny.
Don’t you want it to look a little nicer? echo __LINE__ . “: Moo!”;
I mean, presuming cowsay is unavailable
dbg!()
for Rust users
And when you need something more complex
console.log(1); […] console.log(2); […] console.log(3);
More like
console.log('shit'); […] console.log('fuck'); […] console.log('ass');
yeah and then you forget about one that makes it into a release and then see it in the console.
This is the real reason we have linters.
Beep
Boop
Gloop
Glorp
Yeet
Yo
“Hello worl” if I need something quick
“AAAAAAAAAAAAAAAAA” if I’m lazy and don’t want to have to hunt the output logs for it
That’s me… I do that…
This is why I find shaders scary as fuck
tfw I recently worked on a side project where I was too lazy to change the log level but not sloppy enough to use raw
printf
so I’d just throw stuff into info and then remove the statements once I solved my issue[[[[[[[[[ TEST ]]]]]]]]]
After all, that’s why git is there, to help me remember the shit I put all over the place. (Ok, it might have some other uses.)
dbg!(1)
all the time…Ahhh, my favourite debugging combo…
echo "<pre>"; print_r( "We are here, we are here!" ); echo "</pre>"; die();
Also fun at parties, hanging out asynchronously, is the ever popular PHP Mail to see if something ran in the background properly, or to get output.