I think debugging is a hard-won skill that comes from fixing your own mistakes and having the patience to trawl though logs for hints.
I think debugging is a hard-won skill that comes from fixing your own mistakes and having the patience to trawl though logs for hints.
1) How to add `-ansi -pedantic -Wall` to their compilation flags.
2) That they absolutely have to do it whenever they're coding C/C++.
3) That they need to read and then clear out all the warnings before continuing to code.
Suddenly, their programs started to work most of the time, instead of crashing or hanging.
I still give this advice whenever I teach people, but with modernized set of flags. That'll be `-Wall -Wextra` and `-std=c++17`, or whichever standard is most current for their situation. Recently I've been teaching people who use MSVC community edition, so I tell them where to bump the warning level in setting - and the IDE is good at catching and annotating typical mistakes too.
Myself, I do all that + run clang-tidy for good measure.
(Another C/C++ thing that beginners need to be told is that, for any given translation unit with compile errors in it, they should always focus on the first couple errors, particularly on the very first one. A compilation error usually confuses the compiler, so anything past the first one or two is usually garbage, and disappears if you fix the real ones.)
I do not remember the details anymore, but some code provoked a compiler warning from one of the compilers, while its easiest fix provoked a compiler warning from another of the compilers.
I wanted to keep my -Wall, but it required strange twists of code sometimes.