Generally everyone use gdb for debugging C,C++ programs in Linux. There is another tool called valgrind that is an amalgamation of a host of other tools for debugging.For examples memcheck which is used to debug memory related issues, helgrind which is used to debug multithreading programs. The tool is open source and packages exist for all distributions. Usage
Though I must say that you have to read the documentation about the concerned tool to find out exactly what is the meaning of the messages generated by every tool otheriwse its difficult to comprehend the out genereated by the tool for your executable.