Once you've clarified the bug, you have to go and look at various parts of the system. Which parts of the system to look at is based on your knowledge of the system. Usually it's logs, monitoring, error messages, core dumps, or some other output of the system. If you don't have these things, you might have to launch or release a new version of the system that provides the information before you can fully debug the system.
Although that might seem like a lot of work just to fix a bug, in reality it often ends up being faster to release a new version that provides sufficient information than to spend your time hunting around the system and guessing what's going on without information. This is also another good argument for having fast, frequent releases – that way you can get out a new version that provides new debugging information quickly. Sometimes you can get a new build of your system out to just the user who is experiencing the problem, too, as a shortcut to get the...