```
% Turn on call tracing for all processes
1> erlang:trace(all, true, [call]).
40
% Trace all function calls in the arithmetic module
2> erlang:trace_pattern({arithmetic, '_', '_'}, true, [local]).
6
% Run the code in another process
3> spawn(fun() -> arithmetic:multiply(4, 3) end).
<0.126.0>
% Turn tracing off
> erlang:trace(all, false, [call]).
40
% Because we didn't specify a tracer process all trace messages got sent to the shell
> flush().
Shell got {trace,<0.126.0>,call,{arithmetic,multiply,[4,4]}}
Shell got {trace,<0.126.0>,call,{arithmetic,'-multiply/2-fun-0-',[1,0,4]}}
Shell got {trace,<0.126.0>,call,{arithmetic,'-multiply/2-fun-0-',[2,4,4]}}
Shell got {trace,<0.126.0>,call,{arithmetic,'-multiply/2-fun-0-',[3,8,4]}}
```