Hardcode expected values into functions. Run each function until I find the one which isn't proving expected behavior when given hardcoded values.
Take out half of the app at a time, look at which half is still working, and know it's the other half which is the problem. Keep doing that until I get to the lines which are causing problems. Obviously this is hard to do with larger apps.