5 exercises on the precise English phrases used when hunting down the root cause of a software defect.
Key investigation collocations
narrow down the cause → eliminate possibilities progressively
trace the root cause → follow the chain of events backwards
isolate the issue → reproduce in a controlled environment
pinpoint the commit → locate the exact introducing change
reproduce consistently → make the bug appear reliably every time
0 / 5 completed
1 / 5
A developer says: "I've added detailed logging to every function in the call chain. Now I can ___ the cause to the database query — it times out under load."
Which verb is correct?
"Narrow down the cause" — the standard phrase for progressively eliminating possibilities:
Narrow down is a fixed phrasal verb meaning to reduce a set of possibilities to a smaller, more specific subset. In debugging, you narrow down the cause by eliminating possible factors one by one until the true root cause is isolated.
Investigation process vocabulary:
narrow down the cause / the issue / the list of suspects → eliminate possibilities progressively
isolate the issue → separate it from other factors so it can be studied alone
trace the root cause → follow the chain of events back to the origin
pinpoint the bug → identify the exact location: "We pinpointed it to line 247 in auth.ts"
rule out X as the cause → eliminate a factor: "We ruled out the database — it's the caching layer"
Typical investigation sequence: 1. Reproduce the bug → 2. Narrow down the component → 3. Isolate the module → 4. Trace the root cause → 5. Pinpoint the exact line
2 / 5
A developer writes: "I used git bisect to ___ the commit that first introduced the memory leak. It was commit a3f8e2c, merged three weeks ago."
Which verb is correct?
"Pinpoint the commit" — the precise collocation for identifying an exact point in history:
Pinpoint means to locate with very high precision. In the context of git bisect, you don't just find the commit — you narrow it down to the exact one, which is what "pinpoint" captures.
git bisect vocabulary:
git bisect start → begin the binary search
git bisect good <commit> → mark a known-good commit
git bisect bad <commit> → mark a known-bad commit
bisect commits → use binary search to find the introducing commit
pinpoint the commit / the bug / the regression → locate with exact precision
When to bisect: "We know it worked in v1.4.0 and is broken in v1.5.0 — let's bisect commits to pinpoint the regression." Bisect performs a binary search across the commit history, halving the search space with each step — typically finding the culprit in log₂(n) steps.
3 / 5
A senior engineer gives advice: "Don't debug in production. Instead, ___ the issue in a controlled test environment where you can change variables freely."
Which verb is correct?
"Isolate the issue" — a core debugging principle and collocation:
Isolate means to separate the bug from all other factors so you can study it in a clean, controlled context. Isolation is a fundamental debugging principle: you cannot reliably fix what you cannot isolate.
Isolation techniques and vocabulary:
isolate the issue → reproduce it without other variables interfering
isolate the component → test one module, not the whole system
create a minimal reproduction (min repro) → the smallest possible code that still exhibits the bug
stub out dependencies → replace real dependencies with test doubles so you can test in isolation
reproduce in isolation → confirm the bug appears even without external services
Why "contain" is wrong here: "Contain" means to limit the damage of something (contain a breach, contain an incident). It doesn't mean to study something in isolation. "Isolate" is the correct term for controlled debugging environments.
4 / 5
A team lead says in a post-mortem: "We need to ___ the root cause, not just fix the symptom. The service crashed because of a cascading failure, not the network timeout that appeared in the logs."
Which verb is correct?
"Trace the root cause" — following a chain of causation to its origin:
Trace implies following a path backwards — like tracing a wire to its source. When used with "root cause," it means following the chain of events or the call stack backwards to find the original triggering event.
Root cause vocabulary:
trace the root cause → follow the chain of causation backwards
identify the root cause → determine what it is
address the root cause → fix it (not just the symptom) — this is about fixing, not investigating
Root Cause Analysis (RCA) → the formal process of investigating the underlying cause of a failure
5 Whys → ask "why?" five times to drill down to the root cause
Root cause vs symptom: "Service crashed" = symptom. "Memory leak caused OOM killer to terminate the process" = root cause. Always say "the symptom was X; the root cause was Y" in post-mortems.
5 / 5
A developer says: "I can't seem to ___ this consistently. Sometimes it happens, sometimes it doesn't — it's a flaky test that only fails on CI, never locally."
Which verb is correct?
"Reproduce consistently" — the key collocation for reliable bug recreation:
While "trigger" is also correct (you trigger a bug to appear), "reproduce consistently" is the standard phrase that captures the full meaning here: not just causing the bug to appear, but causing it to appear reliably every time with the same steps.
Flaky test vocabulary:
flaky test → a test that passes sometimes and fails other times with no code changes
reproduce consistently → the bug appears every time you follow the same steps
intermittent failure → occurs randomly, not every time
non-deterministic → the outcome depends on timing, order, or external factors
quarantine a flaky test → separate it from the main suite while it's investigated
CI-only bugs common causes: Race conditions (CI is slower), environment differences (different OS, Node version), missing env variables, hardcoded localhost URLs, resource constraints (memory/CPU), timezone differences. Always say "the test is flaky" or "it fails intermittently on CI" — not "the test is broken" (which implies a permanent failure).