The Linux system call tracing program, strace, is very useful for understanding what a program does and for investigating bugs.
Unfortunately, it is not very scriptable.
hatrace, which is strace-as-a-library, aims to address this.
In this talk I explain what system calls are, how they work on Linux, how strace works, and how you can use hatrace's Haskell API to do things that are hard to do with strace. I also show how I can reliably reproduce rare GHC bugs with it, how to use it for testing, some of the implementation details, and interesting potential use cases.