I know profilers and debuggers are a boon for productivity, but anecdotally I’ve found they’re seldom used. How often do you use debuggers/profilers in your work? What’s preventing you? conversely, what enables you to use them?

  • xian@beehaw.org
    link
    fedilink
    arrow-up
    10
    ·
    1 年前

    As a C# programmer I use the debugger every single day, since it’s so natural and easy to use as to just run the application. I’ve grow spoiled actually, when I program in Go or Rust I really miss the “it just works” debugger.

    • frosty@beehaw.org
      link
      fedilink
      arrow-up
      4
      ·
      1 年前

      Same here. The Visual Studio debugger is excellent, and there’s never a day that goes by without me using it.

    • Jaloopa@beehaw.org
      link
      fedilink
      arrow-up
      4
      ·
      1 年前

      I can’t imagine programming without regularly pausing execution to inspect intermediate variables, run some quick checks in the immediate window or set conditional breakpoints. I’m always a bit surprised when I remember there are people who don’t work like that

    • pinkpatrol@anarch.isOP
      link
      fedilink
      arrow-up
      8
      ·
      1 年前

      How do people do stuff without debuggers? :D

      Another way to develop would be through iterating within a Unit Test that you don’t plan to keep around.

      Uh, I set a breakpoint and run the app?

      To add a bit more context, it’s more difficult to configure a debugger when the application is running within something like Docker. How difficult? That depends on the language and tools you’re using.

      • Nicktar@beehaw.org
        link
        fedilink
        arrow-up
        8
        ·
        edit-2
        1 年前

        I’ve seen the fun of “prints everywhere” in production when a colleague forgot to remove a “Why the fuck do you end up here?” followed by a bunch of variables before committing a hot-fix… Customers weren’t to amused…

        Edit: That was a PHP driven web shop and the message ended up on to of the checkout page

        • @mastodon.social
          link
          fedilink
          arrow-up
          2
          ·
          1 年前

          @Nicktar I usually prefer the prints everywhere approach, but of course printing to STDERR not STDOUT - so it ends up in a log, and not in the program output 😅 won’t make that mistake again!

        • MagicShel@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          1 年前

          That must’ve prompted a bit of existential crisis in some shoppers. I can see going to purchase some useless consumer shit online and getting a message “Why the fuck do you end up here?” and just closing my browser and rethinking my life decisions.

      • aksdb@feddit.de
        link
        fedilink
        arrow-up
        3
        ·
        1 年前

        We run almost everything on bare metal during development. The ci/cd pipeline runs containerized and also produces a container with the application inside, that then gets deployed to production. But we don’t debug on production, so that isn’t an issue.

  • Hudell@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    8
    ·
    1 年前

    I use debuggers all day every day. If I’m running something in development, there’s a very good chance I have it connected to a debugger. Also use it whenever I encounter an unexpected behavior in production (we use our own product for work too)

    The profiler is a lot more specific and I haven’t used it in a while.

  • Nicktar@beehaw.org
    link
    fedilink
    arrow-up
    5
    ·
    1 年前

    I seldom use profilers because I seldom need to. It’s only usefull to run a profiler if your programm has a well defined perfomance issue (like “The request should have an average responsetime of X ms but has one of Y ms” or "90% of the requests should have a response after X ms but only Y% actually do).

    On the other hand I use a debugger all the time. I rarely start any programm I work on without a debugger attached. Even if I’m just running a smoke test, if this fails I want to be able to dig right into the issue without having to restart the programm in debug mode. The only situation, where i routinely run code without a debugger is the red-green-refactor cycle with running unit tests because I’ll need to re run these multiple times with a debugger anyway if there are unexpected reds…

    What enables me? Well there’s this prominent bug-shaped icon in my IDE right besides the “play button”, and there’s Dev-Tools in Chrome that comes with the debugger for JS…

    Running your code without a debugger is only usefull if you want to actually use it or if you’re so sure that there aren’t any issues that you might as well skip running the code altogether…

  • cnk@kbin.dk
    link
    fedilink
    arrow-up
    5
    ·
    1 年前

    I have a tendency to just use console logging, and only use debuggers when things are starting to get hairy.

  • codus@leby.dev
    link
    fedilink
    arrow-up
    3
    ·
    1 年前

    I find debuggers are used a lot more on confusing legacy code.

    Lately, monitoring tools such as OpenTelemetry have replaced a lot of my use of profilers.

  • sjolsen@beehaw.org
    link
    fedilink
    arrow-up
    3
    ·
    1 年前

    At my last job, doing firmware for datacenter devices, almost never. JTAG debugging can be useful if you can figure out how to reproduce the problem on the bench, but (a) it’s really only useful if the relevant question is “what is the state of the system” and (b) it often isn’t possible outside of the lab. My experience with firmware is that most bugs end up being solved by poring over the code or datasheets/errata and having a good long think (which is exactly as effective as it sounds – one of the reasons I left that job). The cases I’ve encountered where a debugger would be genuinely useful are almost always more practically served by printf debugging.

    Profilers aren’t really a thing when you have kilobytes of RAM. It can be done but you’re building all the infrastructure by hand (the same is true of debugger support for things like threads). Just like printf debugging, it’s generally more practical to instrument the interesting bits manually.

  • camel-cdr@beehaw.org
    link
    fedilink
    arrow-up
    3
    ·
    1 年前

    I recently started doing xeyes debugging.

    We have so many debug logs that trying to find your log of a background takes a non zero amount of time.

    So just inserting system("xeyes"); is actually way easier, to get instant feedback, and you can just use system("xmessage msg"), if you need a message.

  • Papamousse@beehaw.org
    link
    fedilink
    arrow-up
    3
    ·
    1 年前

    Really often, even since TurboDebuger in the 90s, no other way to trace your code, step over/into, watch variables, etc. For compiled program it’s necessary. For javascript I use print lol

    • The Doctor@beehaw.org
      link
      fedilink
      arrow-up
      2
      ·
      1 年前

      Don’t forget being able to watch the stack in realtime, and run your code backwards to roll back its state!

  • Biscuit@kbin.social
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 年前

    Every single day. They’re built into the IDE. It’s easier to use them than to not use them.

  • xylem@beehaw.org
    link
    fedilink
    arrow-up
    2
    ·
    1 年前

    Pycharm debugger has been great for me recently, I love the feature where you can drop into an ipython repl and interact with your program state.

  • letsgo@lemm.ee
    link
    fedilink
    arrow-up
    2
    ·
    1 年前

    C# dev here. Quite frequently. When writing new code, instead of trawling the docs looking for what odd name the thing I’m looking for has been given, especially when it’s several layers deep in a structure where each layer has dozens of members, to see where in the data structure the value I’m looking for is, makes it a lot easier to determine the next few lines of code to write.

  • mike901@beehaw.org
    link
    fedilink
    arrow-up
    2
    ·
    1 年前

    All the time. I deal with a lot C# code that makes and responds to HTTP API requests, and being able to check if requests and responses are properly formed without having to slap print statements everywhere is a godsend.

  • The Doctor@beehaw.org
    link
    fedilink
    arrow-up
    1
    ·
    1 年前

    These days? Never, but I’m mostly writing Ansible and Terraform at work.

    When I was writing any code at previous jobs? Also never. It was one part we were highly restricted in what we were allowed to use (and I didnt feel like trying to get gdb through the approval process; it was far easier to just use print statements inside of conditionals) and one part the languages all being scripting languages.