There is a system composed of an ASP.NET web application, .NET windows services and shared .NET libraries. It has large number of classes, each containing multiple methods.
How to conveniently collect runtime data about execution of methods without having to modify each single class and method? The goal is to register execution of all the methods that are part of the system (except .NET Framework classes). The purpose of collecting this data is to learn what features of the system are never used by the users. We already performed static code analysis as well as eliminated pages that were never displayed based on IIS logs.