Techniques for Efficient Debugging