REFERENCE GUIDE

Dynamic debugging and hypothesis-driven breakpoints

Dynamic analysis observes a concrete execution and tests static hypotheses.

Also known as: gdb reversing

dynamic-debuggingreversing

Mechanism

Dynamic analysis observes a concrete execution and tests static hypotheses. Breakpoints should target a question: which bytes are compared, where an index becomes a pointer, or what branch accepts input. Watching every instruction from process entry produces noise and may miss the relevant state transition.

Practical method

Run a minimal known input and stop at a validation landmark. Inspect arguments, memory, and return values. Change one input property and compare the state at the same breakpoint. Use watchpoints when you know an address but not the code writing it.

break main
run
disassemble /r
x/32bx $rsp
info registers

Interpreting evidence

Write down predicted register or memory values before stepping. A mismatch guides the next observation and prevents turning the debugger session into an unstructured search.

Pitfalls and limits

Debugger attachment changes timing and can trigger anti-debug checks. ASLR changes absolute addresses. Hardware watchpoints have size and count constraints; relocated objects can move out of the watched region.

Sources & further reading

  1. Breakpoints and watchpoints ↗gdb

Content license: CC-BY-4.0. Source-derived sections retain their cited licenses and redistribution notices. How this reference is compiled →