Ręczna, dokonywana przez programistę (logi, assercje)
Automatyczna modyfikacja kodu (Parasoft, Insure++)
Instrumentacja kodu pośredniego, dodawana do assembly lub po dessaemblacji
Z wykorzystaniem kompilatorów, symbole debuggera umieszczene w kodzie maszynowym, np. gcc -pg
dla gprof, Quantify
Binarna, instrumentacja dodawana do kodu maszynowego (ATOM)
W czasie działania (runtime): instrumentacja w momencie uruchamiania, program działa pod nadzorem narzędzia profilującego (Valgrind, Pin, DynamicRIO), kod modyfikowany w czasie wykonywania (DynInst)