Advanced Erlang Techniques

Target Audience: Software Developers, Support & Test Engineers with experience in Erlang,

Prerequisites: Knowledge and experience of Erlang, at least equivalent to Erlang by Example or Erlang Express courses. Knowledge of OTP is beneficial but not strictly necessary. Experience with building and maintaining large systems.

Objectives: Understand how to use more expert tools for building and testing systems. Understand the basics of profiling and debugging of running systems.


Duration: Three days

This three-day course presents some more advanced tools for building applications with Erlang. It also gives insight into the tracing tools in the system which allow support engineers to inspect and monitor running systems. The Common Test testing environment is also described with examples of how to build testing environments from the very simplest upto complex environments for testing distributed systems. There are exercises for all the sections in this course.

Course Contents

Types and Checking

While Erlang is dynamically typed it is practical to be able to document the types of functions in a consistent way. In this section we present the standard way of specifying function types. We also present two very useful tools, dialyzer and typer, which are used to type check applications.

Parse Transforms

There are many occaisions when it is useful to be able to generate code at compile time. The standard OTP system as well as commonly used libraries do this. This section covers parse transforms, the standard Erlamg compiler interface for this, as well as some tools which are useful together with parse transforms.

Common Test

A guide on how to use Common Test, from unit tests to large scale testing. This covers unit test, testing with state, test groups and suites, how to configure tests, write specifications and do distributed testing.


The standard Erlang release contains a number profiling tools. This sections looks at these and shows they can be used to profile systems to gain a deeper understanding of their behaviour.

Trace Bifs and Match Specifications

Trace bifs provide a low-level trace mechanism which can be used without trace compiling the code. It allows tracing garbage collection, memory consumption, message passing, and other process activities including local and global function calls. This section looks at how to activate and deactivate the different trace flags as well as turning them on for different processes, modules and functions. It also covers match specifications, a low level mechanism which match and test the arguments passed to traced function calls.

The dbg tool

The dbg tool is a text based debugger providing a friendly interface to the trace bifs. This section introduces the tool and covers how this tool can be used in a distributed environment or how the output can be redirected on other nodes, log files, ports and sockets.