valgrind, 常用的功能有memcheck, cachegrind, callgrind,
cachegrind, callgrind的结果可以用kcachegrind来查看.
除gcc/g++外可以使用clang/clang++来编译,可以提供更加详细的错误提示.
可以使用AddressSanitizer来检测内存错误和内存泄露.
可以使用ThreadSanitizer来检测多线程同步问题.
可以使用mutrace来检测线程锁的竞争的条件变量的竟争.
http://0pointer.de/blog/projects/mutrace.html
Linux下可以使用perf来做更加精确的性能统计,以作为性能调优的依据.