Ok, maybe I'm a little bit too hard.
But what you tell is bullshit. There are complete businesses around debugging applications.
Programming is a lot more than just sitting behind your pc and writing a little program as a hobby.
You need to educate yourself to an engineering level to understand what goes on inside a computer. I do not pretend to know all of this as computer sciences are not my main speciality.
But what I do know, and this is from experience, is that you can certainly debug applications without debugging symbols in a debugger. But you'll need to know how the computer, the operating system, the compiler and the debugger work. This is not a quick question on a forum and 5 minutes later you have a magical answer.
As suggested above, nothing stops you from including a logger in your program to log debugging messages just like if you use qDebug().
But if that fails, you'll need to use a debugger.
One of your next questions could have been: "Where do I find more information about debugging my program?"
I would have responded with: "A good place to start is the documentation of the debugger you're going to use."
Another question could have been: "Can I compile my program in release mode and still have all my symbols available somewhere?"
I would have responded with: "Of course you can, see the manual of your compiler and debugger. You can even split everything up!"
Another question could have been: "What exactly is the difference between a debug and release?"
Even another question could have been: "Why do I get this error in release mode? Does it have something to do with my compiler optimizing some critical code that I didn't guard so well in my application?"
etc...
Did you ever see a crash log in Windows? Can you make sense of it?
I used to play a lot with Lego. It was fun to create little machines. Everyone can do that. Later I got a masters degree in electromechanical engineering. I now work on multi million dollar/euro infrastructure projects. I can tell you this: with the knowledge to put together little lego machines, you get nowhere. You need a much better understanding of how things work to be able to get the errors out of a design.
Today you get all these nifty tools like finite element software. I can tell these programs "look, here's a sketch of a bridge, tell me if it will hold at least 5 cars in the winter". And 5 minutes later the program tells me if it does. But I can tell you this: a lot of people working with these programs do not know the meaning of the results, they do not know how to interpret this. And this is extremely dangerous.
The same can be said with programming. Most people can write program code. But when you get into a situation where you are now, it takes experience and knowledge to understand what goes wrong and to solve it.
Bookmarks