Themergency fooplugins.com
debug

Debugging WordPress Roundup

| 3 Comments

UDPATE : 6 Jan 2011 – Added the Debug Bar plugin to the list of plugins.

If you develop plugins or themes for WordPress, then you surely have to enable some sort of debugging mechanism. If not then you are flying blind and the possibility that your code has bugs increases tenfold. There are many ways to debug in WordPress and this post is intended to roundup all the options in one page, so you can pick and choose which one(s) work for you.

WP_DEBUG

Probably one of the most famous WordPress constants. Define it in your wp-config.php file and “debug mode” will be enabled.  When enabled, errors and warnings are displayed.

WordPress Codex : ‘Editing wp-config.php’ - Debug section
A bit of info from the codex about WP_DEBUG, SCRIPT_DEBUG.

5 Ways to Debug WordPress
A must-read from Andrew Nacin. The post goes over 5 ways to debug WordPress, including:

  • WP_DEBUG
  • SCRIPT_DEBUG
  • SAVEQUERIES
  • The ‘all’ and ‘shutdown’ hooks
  • Core Control plugin

Quick WP Tip: Simple WordPress debugging
Another great tip from Yoast.com which allows you to enable debug mode by using a simple querystring value.

Enable Debugging And Logging For Live Site Usage
This starts with the same sort of idea as Joost’s above article and expands on it.

Actions and Filters

From a code point of view, WordPress contains programming hooks that allow you to either attach functionality (actions) or modify data (filters). So obviously, one way to extend WordPress is to create your own actions or filters. Here are some articles on WordPress action and filter hooks:

Debug WordPress hooks – by Andrey Savchenko

WordPress: Oh Those Actions and Filters! – by kovshenin

WordPress Hooks Database – by Admin Brown. Adam has put together a list of EVERY hook within WordPress and shows when the hook was added and if it is deprecated. Amazing!

Plugin API/Action Reference – This WordPress.org Codex article lists all action hooks available for use in plugin development.

White Screen of Death

If you develop for WordPress then I bet you have seen the infamous White Screen of Death (WSoD) at some stage before. James Huff sums up the WSoD perfectly in his post : “Nothing can be more unsettling than an obvious problem with absolutely no error or diagnostic message, and that’s exactly what the infamous white screen of death is“.

In most cases, a quick solution is simply a matter deactivating all your plugins. While this might seem extreme and you will probably loose most of your site’s functionality, at least the site will work and visitors can browse it!

Here are some articles on the subject and how to resolve it:

WordPress and the White Screen of Death by James Huff

Beware the WordPress white screen of death by Joab Jackson

How to troubleshoot WordPress “White Screen” of Death by Jared Heinrichs

Helpful Plugins

Debug Bar – Requires WP 3.1 and hooks into the new admin bar. It shows you many different bits of info about queries, cache, warnings and much more!

Log Depricated Notices – Logs the usage of deprecated files, functions, and function arguments, and identifies where the deprecated functionality is being used.

Core Control – Core Control is a set of plugin modules which can be used to control certain aspects of the WordPress control. Currently, Core Control features modules for managing Filesystem Access, Managing plugin/theme/core updates, Managing HTTP Transports & External HTTP Request logging

Debug Objects – provides a wide variety of info to the user to help with debugging, including memory usage, constants, file permissions, queries, theme info, cache content and much more!

Dump Environment – Prints the classes and variables for debugging purposes.

Debug Queries – list all DB queries to find the slow performing ones.

Step Into Your Code!

I find the best way to debug my code is simply to “step into” the running code to see exactly what is going on and what the different variable values are. I have written an article a while back on doing exactly this, using NetBeans PHP IDE and XDebug. This has saved me countless hours in development time. Go check out how to set it up:

Debugging WordPress Like A Master

Yoast’s Debug Theme

Yoast has created a special WordPress theme especially for debugging. Now this is nice and useful in a development environment, however, I would never suggest enabling the theme on a live site. In his article, Yoast talks about using the theme together with the Theme Tester plugin so as admin, you can get the benefits of the debug theme without your users having to see it. Brilliant!!

Yoast Debug Theme

In Summary

So there are a number of ways to debug your WordPress code. Some, in my opinion, are under-utilized while being very powerful. With a little up-front effort, you could really improve your productivity and code output. If you are having bugs and issues, use some of the techniques or ideas mentioned above to find and squash the bugs.

This doesn’t mean you should do it only on your code, do it for other code too. Too many WordPress user are so quick to tell you that your plugin or theme is broken and crap, but they never investigated why it broke or where. Most times the plugin developers are too busy at the precise moment you need their help. And it’s not their fault, but you can do something about it yourself now. You could debug the problem and fix it yourself! Heaven forbid!!! :)

And remember, before you release that plugin to the world please test, test test!!!


1 comments
Rarst
Rarst

Glad you found my snippets for hooks debug useful. :) I use them almost non-stop, especially for Hybrid theme which is great to extend and modify by using hooks alone.

Seen most posts on the list, except stuff on white screen. Off to skim those.

Trackbacks

  1. [...] This post was mentioned on Twitter by Marc Forrest, Themergency. Themergency said: new blog post "Debugging WordPress Roundup" http://bit.ly/emMnEY #WordPress #Debug #WP [...]