Depends on the type system. I would say for Java / Python level static types they catch a small but significant fraction of bugs (10-20% according to the only objective measurement I've seen, which is easily worth it). However some languages like Rust, Haskell and OCaml let you express much more in the type system.
Subjectively it feels like that catches more like 30-60% of bugs.
So this thing is still useful but Berkes is right that you need it a lot less if you use better static types.
> which code paths are relevant for a given endpoint?
This is exactly the question that static types can answer... statically. You don't need a runtime log to find out.
You do need a runtime log to see the actual values though. So it's not like a debugger is completely useless in Rust. But I definitely reach for it much less than in other languages.