It is often helpful to put snoop commands in programs that you are trying to debug. The Snooper provides a few features to assist with that.
For example, if you are trying to understand the expression
aFamilyTree oldestLivingMember favoriteAunt coatOfArms = self coatOfArms
you could insert a snoop call without restructuring your code:
aFamilyTree oldestLivingMember favoriteAunt snoop coatOfArms = self coatOfArms
or,
(aFamilyTree oldestLivingMember favoriteAunt snoop: 'favoriteAunt') coatOfArms = self coatOfArms
(Note that parentheses are required in the second expression.)
The Snooper also records the stack trace, and allows you to browse any of the last dozen or so methods called before the Snooper was invoked.