this post was submitted on 28 Feb 2024
999 points (97.0% liked)
Programmer Humor
32410 readers
147 users here now
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
- Posts must be relevant to programming, programmers, or computer science.
- No NSFW content.
- Jokes must be in good taste. No hate speech, bigotry, etc.
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
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.
Where does it write the file
Nobody knows
Probably the same place as failed sudo reports
On a secret FBI server somewhere where they watch your failures and laugh
When you apply for a home loan or a passport:
"Unfortunately we will have to reject your application"
"Why?"
"We have received several reports of failed sudo attempts and segmentation faults"
I believe it's
/var/lib/apport/coredump
on Ubuntu.imagine if it, like, told you this so you didn't have to find out about it via a post on lemmy
imagine if it like, read that file and gave you a stack trace
gdb gives you waaaaaaaaaaaaaaay more than a stack trace.
...unless you build the executable with optimizations that remove the stack frame. Good luck debugging that sucker!
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.
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.
i mean you're expected to know the basic functioning of the compiler when you use it
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.
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.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.
Ah I see, that's actually pretty cool - thanks!
np
you can set it
tl;dw: writes to the path in
/proc/sys/kernel/core_pattern
If you are using systemd, there's a tool called coredumpctl.