Kommt auf den Fehler an. Bei einfachen Dingen wie z. B. NPE die ich nicht auf einen Blick erkenne pflaster ich den Bereich mit System.out's zu. Wenn der Codeteil nicht zu oft abgearbeitet wird, kann man danach die Ausgaben schön auswerten. Geht am schnellsten und einfachsten.
Wenn der Code sehr oft abgearbeitet wird, oder der Bug etwas schwerer zu durchschauen ist, setze ich einen Breakpoint und fahr es im Debug-Modus durch. Dauert etwas länge, und ein falscher Klick und man muss eventuell von vorne anfangen, aber man hat volle Kontrolle über den Thread und seine Variablen.
Bei wirklich hartnäckigen Fehlern, z. B. wenn ein einen Swing-Component eine Variable, wie setEnabled falsch gesetzt, was sich auf andere GUI-Komponenten auswirkt (JInternalFrames vor ein paar Tagen z. B.), kopiere ich das ganze Projekt, und minimiere es auf das allernötigste. Wenn der Bug noch da ist, spiele ich mich so lange herum, bis ich die gemachten Änderungen auf das Hauptprojekt übertragen kann. Wenn er nicht mehr da ist, kopiere ich nacheinander alles vom Hauptprojekt hinüber und führe es aus, bis es wieder nicht geht und der fehlerhafte Teil isoliert ist, und dort herumgespielt wird, bis es wieder funktioniert und die neue Erkenntnis aufs Hauptprogramm übertragen werden. So dauert es zwar, aber solche logischen Bugs in 3th-Person-Klassen sind auch imho sehr schwer zu finden und nur durch Erfahrung oder herumprobieren zu beseitigen.
Bei kurzen Codestücken, die nicht machen was du willst, kannst du auch mal versuchen, sie einfach nach Pastie etc. zu kopieren und dort durchzugehen. Durch das andere Design sind mir schon Fehler aufgefallen, die ich mehrmals in Eclipse übersehen habe. Ist zwar nicht besonders erfolgsversprechend, aber einen Versuch wert.
Wenn all das nicht hilft, frage ich einen Bekannten, 4 Augen sehen bekanntlich mehr als 2.

Aber übertreibs besser nicht, sonst flüchtet er vor dir eventuell nach Amerika.

Wenn all das nichts hilft, frage ich i. d. R. im Forum.
Und wenn hier auch niemand etwas weiß, bin ich so frustriert, dass ich das Programm nie mehr angreife.