• FlatFootFox@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    My favorite compile error happened while I was taking a Haskell class.

    ghc: panic! (the ‘impossible’ happened)

    The issue is plainly stated, and it provides clear next steps to the developer.

  • Subverb@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Nevermind that the C++ program is two orders of magnitude faster when completed.

    I would love to learn and use Rust but I’m a embedded systems guy. Everything of consequence is C and C++.

  • Strykker@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Except the C++ “Core dumped” line is telling you it just wrote a file out with the full state of the program at the time of the crash, you can load it up and see where it crashed and then go and look at what every local variable was at the time of the crash.

    Pretty sure you can even step backwards in time with a good debugger to find out exactly how you got to the state you’re currently in.

              • TarantulaFudge@lemmy.ml
                link
                fedilink
                arrow-up
                0
                ·
                1 year ago

                I love gdb! I recently had to do a debug and wow its so cool! On gentoo I can compile everything with symbols and source and can do a complete stack trace.

              • TangledHyphae@lemmy.world
                link
                fedilink
                arrow-up
                0
                ·
                1 year ago

                Am I the only one in this thread who uses VSCode + GDB together? The inspection panes and ability to breakpoint and hover over variables to drill down in them is just great, seems like everyone should set up their own c_cpp_properties.json && tasks.json files and give it a try.

              • inetknght@lemmy.ml
                link
                fedilink
                arrow-up
                0
                ·
                1 year ago

                …unless you build the executable with optimizations that remove the stack frame. Good luck debugging that sucker!

          • current@lemmy.ml
            link
            fedilink
            arrow-up
            0
            ·
            1 year ago

            i mean you’re expected to know the basic functioning of the compiler when you use it

          • ysjet@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            1 year ago

            Imagine if you knew the most basic foundational features of the language you were using.

            Next we’ll teach you about this neat thing called the compiler.

            • Russ@bitforged.space
              link
              fedilink
              English
              arrow-up
              0
              ·
              1 year ago

              I’m not a C/C++ dev, but isn’t apport Ubuntu’s crash reporter? Why would dumps be going into there?

              Though on a rhetorical thought, I am aware of systemd’s coredumptctl so perhaps its collecting dumps the same way systemd does.

              • ysjet@lemmy.world
                link
                fedilink
                English
                arrow-up
                0
                ·
                edit-2
                1 year ago

                https://wiki.ubuntu.com/Apport

                It intentionally acts as an intercept for such things, so that core dumps can be nicely packaged up and sent to maintainers in a GUI-friendly way so maintainers can get valuable debugging information even from non-tech-savvy users. If you’re running something on the terminal, it won’t be intercepted and the core dump will be put in the working directory of the binary, but if you executed it through the GUI it will.

                Assuming, of course, you turn crash interception on- it’s off by default since it might contain sensitive info. Apport itself is always on and running to handle Ubuntu errors, but the crash interception needs enabled.

    • bartvbl@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      How useful would they be when they rely to such a large extent on various callback functions?

    • OpenStars@startrek.website
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      This right here - C++ iirc is used mostly for microprocessor code in an industry setting, where EXTENSIVE testing is done so that bloated code doesn’t need to constantly check for programmer errors every single time, i.e. where execution speed is prioritized over programmer development time. And whenever that is not the case, well, as OP pointed out, other higher-level languages also exist (implication: to choose from).

        • tool@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 year ago

          Lots of those in C# now, especially with Unity coming along like it did.

      • Backslash@feddit.de
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        C++ iirc is used mostly for microprocessor code

        lol no, it’s used almost everywhere where performance is important and people want(ed) OOP, from tiny projects to web browsers (Chrome, Firefox) to game engines (Unreal, CryEngine). Many of these are hugely complex and do encounter segfaults on a somewhat frequent basis.

        Saying C++ is mostly used for embedded applications is like saying C# is mostly used for scripting games, i.e. it doesn’t nearly cover all the use cases.

        higher-level languages also exist

        This depends on your definition of “higher-level”, but many people would argue that C++ is on a similar level to Java or C# in terms of abstraction. The latter two do, however, have a garbage collector, which vastly simplifies memory management for the programmer(generally anyway).

      • scrion@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        I also currently use it for a new project since all needed 3rd party libraries are from a very specific domain and the project has a deadline, so writing and testing wrappers for Rust that would provide me with any meaningful advantages down the road are too costly to budget for before the deadline.

        That could become part of a future refactoring, though.

  • Omega_Haxors@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 year ago

    C#: Time for a treasure hunt! Find the Null Reference Exception. Here’s a map. X marks the spot.

    • Kogasa@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      C# tells you the call site/method name and line number right at the top. It’s only really annoying when you have aggregate exceptions, which sometimes occur because someone async’d wrong

      • Omega_Haxors@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        Actually getting there is the other part. It’s not like java where you can go down the chain if the problem isn’t where it says it is.

  • ElCanut@jlai.lu
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    1 year ago

    Rust developer: I’d like to compile some code

    Rust compiler: the fuck you are

    • Malle_Yeno@pawb.social
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      The rust compiler holds your hand, wraps you in blankets, makes you hot chocolate, kisses you on the forehead before it gently and politely points out what you did wrong and how you can solve it step-by-step. It would never think of something as heinous as swearing at you, shame on you for insulting my wife’s honour like this.

  • Flxibit@lemmy.world
    cake
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    This C++ message has an urgency vibes to it:

    “Segmentation fault!! Drop the Nuclear Reactor quick!!”

    • henfredemars@infosec.pub
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      Yes. It’s a surprisingly bad debugger the more you think about it. I use it largely in assembly and it loves to spit out random errors about memory it tried to access based on the current register state. The shortcuts are kind of dumb.

      It certainly works but I wouldn’t call it a pleasure to use.

      • xan1242@lemmy.ml
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        I honestly vastly prefer using IDA and Windows specific tools (x64dbg) over gdb. IDA can interface with gdb so it can act as a frontend which can be handy for visualization.

      • TunaCowboy@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        I use gdb with great success for x64, rv64, and c:

        info registers rip or just setup tui:

        # ~/.config/gdb/gdbinit:
        tui new-layout default regs 1 {-horizontal src 1 asm 1} 2 status 0 cmd 1
        tui layout default
        tui enable
        
  • heavy@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    I know this is supposed to be humorous, but there’s a reason why these languages can, and are doing what they’re doing.

    Core dumps are also worth learning about, they’re really helpful if you understand them.