Monday 6: Randy Fay, "Debugging Drupal (hands-on techniques)"

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]