Understanding and Debugging Applications Using Traces