Strategies
Think first
Drupal watchdog / Apache logs
Config / code changes
Internets?
Best practices
Source control,
Take notes
Backups
Local staging
Divide and Conquer
How to split problem down into parts that can be taken on
Divide by modules - turn off N modules [this only works on small sites, really]
Divide by code execution - step through code. Binary search. Ugh
Divide by code commits - git bisect
Tools and prep
Version control
Drush
Understand a debugger
"I enabled a module called 'fail'. DON'T DO THAT."
debug_backtrace() debug_print_backtrace()
[this is all pretty obvious.]
Debugging cron problems by finding hook_cron(s)
Don't hack core? On your local machine, hack away.
[XDebug; dsm(); kcachegrind, Eclipse and breakpoints]