Software Development with Linux

Two For One

MON, 01 MAR 2010

I'm not talking about The Skatalites song, but about two great tools you can use (and should use) when developing software for Linux : Valgrind and strace.

For those who don't know Valgrind, well, it's never too late (as discovered by Intel's Ylian Saint-Hilaire).  Valgrind is a framework for building dynamic analysis tools.  It came with a nice set of tools : a memory checker, a cache profiler, a heap profiler, and a thread debugger.  If you aren't familiar with it, your are missing something.  It can help you find bugs and performance problems a lot faster than you might think.

To help you start, here are some recent (< 1 year old) tutorials about using Valgrind :


For those who prefer books, the official Valgrind 3.3 documentation is available in a printed form.

Now, for strace, it's a a utility which monitor the system calls made by a program and the signals it receives.  Like Valgrind, it's a tool you should be familiar with if you are doing software development with Linux.  For good information about using strace, I suggest you to read the following articles :


So, the next time you have a problem with your software, try to give Valgrind and strace a shot.  You could be surprised by the results.