This post collects free and open source software tools that are useful when you do software development in C. For a survey of software development tools for scientific computation, see A Survey of C and C++ Software Tools for Computational Science by D.J. Worth, C. Greenough and L.S. Chin. See The Art, Science, and Engineering of Software Development by Steve McConnell for some best practices.
- Cppcheck: A tool for static C/C++ code analysis.
- Splint: Annotation-assisted lightweight static checking.
- Natural Docs: documentation generator for multiple programming languages.
- Sphinx: A tool that makes it easy to create intelligent and beautiful documentation.
See A Survey of Software Testing Tools for Computational Science by L.S. Chin, D.J. Worth and C. Greenough.
- CUnit: Unit testing framework for C.
- gcov: A test coverage program. See ggcov for a GUI replacement of gcov.
Profiling & debugging tools
- DDD: Graphical front-end for command-line debuggers such as GDB, etc.
- GDB: The GNU Project debugger.
- google-perftools: Fast, multi-threaded malloc() and nifty performance analysis tools.
- gprof: The GNU profiler. For a tutorial on this tool, see Profiling Tutorial: A simple program by DJ Worth, LS Chin, and C Greenough.
- OProfile: Profiler for Linux systems, capable of profiling all running code at low overhead.
- RATS: Rough Auditing Tool for Security.
- Solaris Studio: Formerly Sun Studio, but is now called Oracle Solaris Studio.
- Valgrind: Instrumentation framework for building dynamic analysis tools.