Code debug made easier and more enjoyable. This WordPress plugin includes a suite of developer essential tools to debug your code.
Here's what you get:
- Better PHP error interface from (Whoops)
- Better variable inspection - no need to use
var_dump
,print_r
, or X-debug - An interactive way to back trace the program's execution order
- PHP 5.6 and up
- Better Variable Inspection
- Backtracing the Call Stack
- Better PHP Error Interface
- Admin Bar Indicator
Watch an introductory video on Vimeo
Though X-debug is powerful, it can be difficult to set up and run. For that reason, it's common to dump or print out the variable to browser. But the built-in display for the PHP var_dump
and print_r
is basic.
This plugin includes both two very popular variable dumper tools:
VarDumper provides a simple container that displays where you place it.
Kint gathers all the data and displayed it at the bottom of the screen as a fixed position container. It also provides a call stack, which can be handy, and tracing functionality if you need it.
It depends.
- You want to simply display the contents of a variable: Use VarDumper's functions, i.e.
vdump()
,vd()
,vdd()
, orvddd()
. - You want the call stack in addition to the variable: Use Kint's functions:
d()
,dd()
, orddd()
.
Task | VarDumper | Kint |
---|---|---|
Dumps the given variable(s) | vdump( mixed $var ); |
dump( mixed $var [ , mixed $var2, ...] ); |
Dumps and dies | vdump_and_die( mixed $var ); |
dump_and_die( mixed $var [ , mixed $var2, ...] ); |
TIP Use the full functions instead of the aliases. Why? It's easier to search your code to find where you put each of them. Searching for
d(
, for example, can be frustrating. But searching fordump(
, that will be a more targeted search.
Alias (shorthand) Functions
Task | VarDumper | Kint |
---|---|---|
Dumps plain text | na | s( mixed $var [ , mixed $var2, ...] ); |
Dumps the given variable(s) | vd( mixed $var ); |
d( mixed $var [ , mixed $var2, ...] ); |
Dumps and dies | vdd( mixed $var ); |
dd( mixed $var [ , mixed $var2, ...] ); |
Dumps and dies | vddd( mixed $var ); |
ddd( mixed $var [ , mixed $var2, ...] ); |
Using the VarDumper functions:
add_action( 'loop_start', function() {
global $post;
$array = [
'ID' => get_the_ID(),
'title' => get_the_title(),
];
vdump( $array );
vdump_and_die( $post );
} );
It renders like this:
Using the Kints functions:
add_action( 'loop_start', function() {
global $post;
$array = [
'ID' => get_the_ID(),
'title' => get_the_title(),
];
dump( $array );
dump_and_die( $post );
} );
It renders like this:
Notice the subtle differences between them:
- VarDumper's functions provide a very simple highlighter container.
- Kint is shown at the bottom of the screen. Notice that it provides more information.
Here's the example code for s()
:
add_action( 'loop_start', function() {
$array = [
'ID' => get_the_ID(),
'title' => get_the_title(),
];
s( $array );
} );
It renders as:
The built-in PHP error container is basic and not as helpful as it could be. On top of that, it's rather ugly. Wouldn't you agree?
The Whoops package gives you a cool interface that is helpful, interactive, and quite nice to look at.
Consider the error this code would produce:
add_action( 'loop_start', function() {
does_not_exist();
} );
You can learn more about Whoops by visiting http://filp.github.io/whoops/.
When debugging, there are times when you need to see the order in which functions were called that lead to a certain point in the program. PHP offers a backtrace that traces back the execution order from the point when the function is invoked.
To make backtracing easier, this plugin provides you with a trace()
function and combines it with the variable dumper functions.
Task | VarDumper | Kint |
---|---|---|
Dumps backtrace | na | trace(); |
Dumps backtrace + given variable(s) | trace_vdump( mixed $var ); |
trace_dump( mixed $var [ , mixed $var2, ...] ); |
Dumps backtrace + variable(s) and then dies | trace_vdump_and_die()( mixed $var ); |
trace_dump_and_die()( mixed $var [ , mixed $var2, ...] ); |
Alias for trace and dump | trace_vdump_and_die()( mixed $var ); |
traced()( mixed $var [ , mixed $var2, ...] ); |
Alias for trace and dump and die | tracevdd()( mixed $var ); |
tracedd()( mixed $var [ , mixed $var2, ...] ); |
Alternative alias for trace and dump and die | tracevddd()( mixed $var ); |
traceddd()( mixed $var [ , mixed $var2, ...] ); |
The trace();
function will render the call stack that lead up to where you invoke the function. For example, if you added this code at the end of your theme's functions.php
file:
add_action( 'loop_start', function() {
trace();
} );
the trace()
renders as:
Notice that the container is interactive. Click on each call stack item and its associated code appears. This is a powerful debugging tool to discover the execution order through your code.
As this tool is meant for development mode only, you need a way to know the plugin is enabled. No problem. A "DEBUG MODE" indicator is added to the WordPress admin bar.