A Chrome web app developer's view. I use log first, then break points if needed. For GUI apps there's actually one more thing I usually do that I would use a component called comp-debug to show the internal data, like this.state.x or this.props.x, and it's cheaper than a log:
