I just came across a mention of profiling and debugging tools for Linux. They are great for performance optimizations of your programs and for reverse engineering of other programs. They are great for finding memory management problems too. I came across this info first from a post on Groklaw. The two programs mentioned there are valgrind and gcov. They were mentioned in a talk given by Tridge, the expert on reverse engineering who is responsible for the Samba project. If you are doing serious Linux programming, go have a look at them.