I find the following tools very useful while working on C++ codes.


  1. g++


  1. Valgrind , very useful to find nifty memory bugs. Use this if you are suffering for Segmentation Fault but don't have a clue. Use it from within Emacs.
  2. gdb with emacs, useful to debug your program.
  3. make, write a Makefile and avoid repeatation while recompiling your program. You can also use Scons instead of make.


  1. Boost
  2. STL


  1. Org-mode, I use Emacs' Org-mode to generate the Readme files and Technical Documents in plain text.


  1. Emacs, Text editing Swiss Army Knife. Try to learn the use of this editor.
  2. VIM

Both of the editors support macros, numerical prefix, and multiple registers. You can use them to edit any kind of source/text files. They have built-in support for almost any programming languages out there, so you don't have to switch editors/ides everytime you switch languages. I prefer Emacs for working with C/C++ codes for its nice integration with gdb.

Source/Version Control

  1. git, my favorite.
  2. svn, what I used for years.
  3. Mercurial, similar to git, but more portable between Microsoft Windows and Linux.

Terminal/Console Tools

  1. Screen can be used to multiplex several virtual consoles. A must.
  2. rlwrap, adds gnu readline capability to any application. (Courtesy: Ben Burnett)


  1. Vim Quick Reference
  2. Emacs Quick Reference
  3. GDB Quick Reference