C++ compilers need to generate multiple library symbols
in compiled code for functions and data that have the same name. For example you may have two functions
in a program with the same name but different function arguments.

To solve this problem C++ compilers will compile object code using name mangling. This is a
technique where the symbol's name is changed to encode type information, such as the the type of a
function's arguments or signature.

This can be a problem later when examining object code, such as when you dump the symbol tables of
compiled programs or libraries using binary file dumpers like 'nm' or 'dumpbin'. You will often see
mangled debugging symbols in stack traces, crash dumps or log files. The symbols reported are often unreable.

Here are some mangled GCC symbols from part of an 'nm' dump that you can try out: