The article mentions it, but you can sum up print debugging as selectively enabling verbose/trace logging. “We’re about to do X” or “We just did Y, here is Z”.
A debugger gives you insight into the context of a particular code entity - expression, function, whatever.
Seems silly to be dogmatic about this. Both techniques are useful!