I have used Postsharp a few years ago to trace program flow during execution without needing to manually add trace statements to the method
Gibraltar uses PostSharp, but provides you with a very powerful client for visualizing your program flow. You can also compare snapshots, view statistics, etc.. Unfortunately it's not free :)
Moreover, most dependency injection frameworks (Unity, Windsor, Ninject, ...) provide method interception. In most cases, you can define traced methods within the app.config file. However, I prefer PostSharp :)
If you only want this ability at debug time, there's Microsoft IntelliTrace that's a part of Visual Studio 2010 Ultimate, and there's Sergey Vlasov's RunTime Flow. The former makes your program run very slow. Haven't tried the latter.