So I've always been a big fan of using drush for debugging. You can see a little bit about it in Finding an exiting Page's Callback Function in Drupal. I find that some of the most annoying bits of testing what I'm doing comes when I'm dealing with Update Hooks. Check out what I do down below using drush to do my testing.
Since AllPlayers kicked me out, I've had the chance to do the contractor thing for a little bit and it's been an interesting eye opener. AllPlayers was my first professional Drupal job and a fine example of a SaaS model at work! Best of all it sported what Drupal really could do running both a Drupal 6 install and Drupal 7 install that talked with one another. But that was only the start. Through all the use of Ruby's Rakefiles, Composure, and Jenkins, I found that we did a lot of shell scripting still there. Where I'm at now, Promet Solutions, things are done a little differently. Since the company not only builds websites but supports what other people have built, it's not always easiest to drag out all the big SaaS components that I'm use to. Sometimes, you just have to go a little lower tech.