Dawno, dawno temu, za siedmioma górami i siedmioma lasami konstruowano duże lampowe komputery, pierwowzory dzisiejszych pecetów. Ówczesne komputery złożone były z olbrzymiej ilości lamp (tranzystory jeszcze wtedy tak powszechnie nie używano). Lampy miały dwie wady: spore zużycie mocy i krótki czas życia. Krótki czas życia, skrócony dodatkowo przez istnienie wielu lamp, powodował że ówczesne komputery częściej nie działały niż działały. Dodatkowo ich rozmiary powodowały duże problemy z namierzeniem usterki. Któregoś razu okazało się, że kolejny błąd w działaniu systemu spowodował robak, którego śmiertelnie poraził prąd w trakcie wędrowania po płycie. Robak, a konkretnie pluskwa (po angielsku bug) nadał nazwę procesowi wyszukiwania i usuwania błędów w programie - debuggowaniu, po polsku odpluskwianiu.
Debugger jest to program komputerowy służący do analizy kodu źródłowego lub kodu maszynowego w celu znalezienia w nim błędów programistycznych (bugów). Proces naprawy kodu za pomocą debuggera określa się mianem debuggowania.
Podstawowym zadaniem debuggera jest symulowanie i sprawowanie kontroli nad wykonaniem kodu, co umożliwia zlokalizowanie instrukcji odpowiedzialnych za wadliwe działanie programu. Oczywiście, współczesne debuggery mają rozbudowane opcje, które pozwalają na efektywne śledzenie wartości poszczególnych zmiennych, wykonywanie instrukcji krok po kroku czy wstrzymywanie działania programu w określonych miejscach.
Debugger jest standardowym wyposażeniem każdego środowiska programistycznego. Niektóre z tych środowisk pozwalają ustawić w kodzie źródłowym punkty wstrzymania, dzięki czemu programista może m.in. śledzić wartości wskazanych zmiennych.
Debugger może również funkcjonować jako niezależny program.
Debuggery, oprócz ich podstawowego przeznaczenia, są często wykorzystywane także do łamania zabezpieczeń oprogramowania (crackingu).
Debuggery posiadają niestety wady - symulacja działania kodu nie jest idealnym odtworzeniem wykonania tego kodu w warunkach normalnych. Wobec tego debuggery mogą nie wykrywać bugów niezależnych bezpośrednio od treści badanego programu.