The utility perfmon runs off of a separate proces than that of the application generating the perfomance counter information. This dictates inter-process communication. If perfom asked for all the counters, it would be a query. These counters may be able to show a graphical view of the counters, but will any point show where a program failed: an informational trace, an assert, or writing to event log. But what about throwing an exception to the caller? Well, it does not appear that there is a method to handle the exception. Trace history desribes the behavior between components and data inside an application. Trace listeners sometimes listen for a specific event. Normally, however, trace listeners are responsible from taking trace information from the source, perfoming filtering, and writing it some destination. The moral of the story is to swat the bug off the bat in real time. Whether it is file sytem errors, registry misconfiguration, or processes and threads, event type filters are usefule ways to lock down what data got from the source API ot the back door. And rather than timing, how about that time stamp?