valgrind是linux下一款开源的程序排错工具,其以非注入方式运行,仅要求程序以debug模式编译即可,不要求在程序中插入任何代码。valgrind模仿debug工具,以调试模式跟踪运行用户程序,可以提供包括内存问题检查、线程同步问题、信号处理问题等,并提供了一系列附加工具。举例:
如下命令检查死锁
valgrind --tool=helgrind --log-file=check.log --error-limit=no [yourprogram] [yourargs]
如下检查多线程并发问题
valgrind --tool=drd --exclusive-threshold=100 --log-file=check.log --error-limit=no [yourprogram] [yourargs]
如下检查内存泄露
valgrind --tool=memcheck --leak-check=full --show-reachable=yes --log-file=check.log --error-limit=no [yourprogram] [yourargs]