The methods will depend on the kind of the problem.
In general "How To Ask Questions The Smart Way" by Eric S. Raymond and Rick Moen is sometimes a helpful advice to focus on the problem and to check if you have thought about important parts of the problem.
Your first source of information during debugging are the logfiles your system/application writes. The common place for them is your terminal or a file in
/var/log/. Many applications support different types of loglevels which you should increase if you can't find any usable messages. Often there is an
-v verbose switch to get more messages.
Still nothing usable? Check your configuration files, permissions of the files needed by the application and maybe you have to change the config of your systemlogger, for example
If you have an error message, a google search will often lead to message board entries or usenet postings discussing the problems behind it. Its likely that you can find a solution there.
A project users mailinglist, message boards and IRC channels can also be very helpful.
Sometimes applications crash without any messages. A great tool to discover the application flow , beside reading and modifying the code is
This tool will trace system calls and signals. When errors are caught by the application, you can still discover problems in the systrace.
Another approach would be debugging the application with
gdb. You should be an advanced user and know what to do, to use this.