Divide and conquer technique - isolate the problem and find the part of a data file that is causing a problem:
Again divide and conquer to isolate the problem
Create test code and data that allows you to reproduce the problem. Ensure you keep examples that work as well so you can ensure that fixes haven't broken anything else.
Good to have isolated examples (i.e. from the 'simplifying' procedure)
Mine information from bug and change databases to find where bugs have been introduced and which parts of a program are most likely to be buggy