If you mean intermittent errors: ones that happen occasionally, but are difficult (or impossible) to reproduce, then there is no one way to find them. They are the hardest problems, and the biggest tests of developers everywhere.
But there are things you can do: look at the error, and try to isolate when it occurs: time of day, day of week, one particular user, one type of data... all of these can be significant.
Look at the data: what is wrong with it? Is there anything that "matches" the input? What should have happened?
And then think. Lots, generally. Try to work out some silly combination of events that
might have generated that result. Then try to think of another, no matter how far fetched.
Then try to prove it. If you can duplicate the problem, you've pretty much solved it, if you can't, then you can never be sure. Add logging and see if anything odd shows up. try to get data, basically - because without it you can't do anything.
And remember:
http://xkcd.com/583/[
^]
Sometimes, you have to put it aside until it happens again - because you can't fix it if you can't reproduce it.