Debugging has always been a problem. One of the other posts here suggested using CLANG because of it's better error reporting. Thats right now, after 25 years. Let's face it, C++ is legendary for the obscurity of it's compile and link time error reporting. Beyond that, it's not like the run time debugging environment is any better. All that it supports is the kind of break point debugging that was in C. No value added beyond K&R.
I started development in C++, but have since done quite a bit of development in Java, JavaScript, Go, and Python. I've really come to miss Clang's expressive compile errors, though there are other things about these languages that can be nice. Java is okay. JavaScript is abominable. Go is nearly as good as Java. Python is pretty terrible. As far as compile errors are concerned, anyway.
The other languages have other things that are good and bad, but C++, especially C++11 is great for just getting things to compile. One other cool thing about modern C++ is that it's easier than ever to force more and more errors to occur during compile time, instead of waiting for a runtime error to blow things up in production.
To make the most of C++ really requires good programming practices, though. For that I highly recommend Scott Meyers' "Effective C++" books.