Check some easy stuff first. Does the crashing version get the same command line arguments? Or special environment variables? Or user ID? Or some other factor you know to be important. In other words, are you really running it with the same input, as it were.
Does it crash all the time? Does it crash in the same place? If you can hook up a debugger after the crash where it broke may provide some clues. Is some recent change a possible culprit? If so, try removing it and see what happens.
Don't get too hung up on these attempts. They're just guesses which are great if they pay off quickly but ultimately unproductive as there are millions of possible differences between "running under a debug" and "running wild and free".
Otherwise, cut the differential analysis and work the problem. That is, look directly at what goes wrong in the crash instead of itererating over possible causes.
Here are a couple of book exceprts that may help you "debug without the debugger".
Chapter 5, "Debugging" from "The Practice of Programming"
The 9 rules from "The 9 Indispensable Rules for Finding the Most Elusive Software and Hardware Problems
Good luck!