“Smoking gun” is a debugging term for direct, conclusive evidence that pinpoints the cause of a problem — not a hunch or correlation, but proof.
Examples
- A stack trace showing the exact line that threw the exception
- A log entry showing
user_id=nullright before the NPE - A git blame revealing the commit that flipped the config value
- A network trace showing the request was sent with the wrong header
Contrast with circumstantial evidence
- “Errors started around the time of the deploy” → suggestive, not a smoking gun
- “The deploy changed the auth middleware, and the failing requests all hit that middleware with a malformed token” → smoking gun
Why it matters
In systematic debugging, you keep digging until you have a smoking gun before fixing — otherwise you’re guessing and might patch a symptom instead of the cause.