Profiling is amongst a class of runtime program examination techniques which also includes tracing and runtime debugging. Tracing is very similar to profiling, but differs in focus. Tracing is most commonly used as a method of examining program logic, rather than application performance. Tools such as strace, ltrace, Electric Fence, and garbage-collection in leak trace mode exemplify typical tracing systems. However, event-based profiling is concerned with examination of particular event data, so is strongly related to tracing. Runtime debugging utilties such as gdb are only used for examining program logic on a detailed level.
Where these methods coincide with profiling is mainly in the implementation techniques used. Function call counts can be implemented with the same basic mechanism as tracing utilities; instrumentation is another technique commonly used throughout this area. Both tracing and debugging are complex areas, and deserve separate discussion of their own.