Settings

Theme

IceCream – Never use print() to debug again

github.com

34 points by gregsadetsky 2 days ago · 22 comments

Reader

oweiler a day ago

Or use tests and/or a debugger. Which gives you all the listed benefits w/o an additional dependency.

  • ollysb 21 hours ago

    Different tools for different cases. Debuggers are great for a snapshot in time but print statements are better for seeing the execution flow.

    • slifin 7 hours ago

      As a profession we need to phase out point in time debuggers and replace them with reverse debuggers or "time travel" debuggers

      • ____mr____ 2 hours ago

        I think PIT debuggers have their use especially with regards to altering state mid run, but this is the first time I've heard of reverse debugging and it seems incredibly useful, especially for multithreaded software I'm often debugging

  • pjmlp a day ago

    Yeah, the amount of wasted hours with 1960's teletype debugging.

    Ah but servers and embedded, that is why telemetry, execution traces, and debugger controlled action points exist.

RockRobotRock a day ago

>Do you ever use print() or log() to debug your code?

I haven't written my own code in months at this point...kind of depressing to think about

  • _345 10 hours ago

    i got half way through the readme for this project and had the same thought and got sad and just left the page

  • benj111 20 hours ago

    So what do you actually do then?

  • squirrellous a day ago

    My first thought as well. Debugging is actually a decent use case of AI.

    • vitally3643 21 hours ago

      I have a board with a logic analyzer, debug/flash probe, PSU, and multimeter on my desk being driven and debugged all autonomously by the AI.

      While the automation and systems side of my brain is thrilled that all of this id automated and integrated, developer brain is sad

awoimbee a day ago

Debugging in python is already so easy with `print(f"{myvar=}")` and `breakpoint()`...

  • Hackbraten a day ago

    This is the correct answer. `ic(foo(123))` can be written as `print(f'{foo(123)=}')` without depending on yet another third-party library which is not pulling its weight.

smackeyacky a day ago

I haven’t used print for debugging for ages. Now it’s all trace on azure and hope your bug ends up in the sampled data in whatever that stupid thing is called. App insights or some rubbish. Apparently a good old log file just isn’t good enough it has to be larded up with a query language. Grep was fine guys.

trvv 21 hours ago

It's neat how trivial it is to do this in C, only takes a couple of macros. https://github.com/trvv/_/blob/d4899741c4f35833b8e86d16e2163...

Looks like the project has a linked repo that appears to do a similar thing for C but it doesn't generically format the arguments.

hankbond 10 hours ago

Yeah this is a miss for me. I've never felt that this was a considerable source of friction. Certainly not enough to justify a dependency.

rurban 18 hours ago

Cannot recommend icecream, way too slow. But the use case of logging shines with realtime systems, or concurrent apps. You won't be able to efficiently debug them without logging. I live in my debugger, but logging is mandatory for the big picture.

  • grun 8 hours ago

    hey! icecream author here. what/how/where is icecream too slow for your use case(s)? feedback is how good products become great

grun 8 hours ago

hey! icecream author here. let me know your thoughts on what could make icecream more useful to you. feedback is how good products become great

Borborygymus a day ago

Remember COBOL's EXHIBIT?

soizi a day ago

why another tool for that ? think standard with other team/company and use the same integrated ones.

IshKebab a day ago

...use slightly fancier print() instead!

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection