How to get xdebug var_dump to show full object/array
I am using xdebug (php_xdebug-2.1.2-5.3-vc9.dll) on WAMP. When I use var_dump
on a large object or variable it does not show the full variable.
array
'node' =>
array
'my_form' =>
array
'form' =>
array
...
Without xdebug it shows as should be expected. I looked at the documentation but did not see a solution. Does anyone know how I can fix this so xdebug var_dump
shows the full object?
Solution 1:
These are configurable variables in php.ini:
; with sane limits
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024
; with no limits
; (maximum nesting is 1023)
xdebug.var_display_max_depth = -1
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
Of course, these may also be set at runtime via ini_set()
, useful if you don't want to modify php.ini and restart your web server but need to quickly inspect something more deeply.
ini_set('xdebug.var_display_max_depth', 10);
ini_set('xdebug.var_display_max_children', 256);
ini_set('xdebug.var_display_max_data', 1024);
Xdebug settings are explained in the official documentation.
Solution 2:
I know this is a super old post, but I figured this may still be helpful.
If you're comfortable with reading json format you could replace your var_dump with:
return json_encode($myvar);
I've been using this to help troubleshoot a service I've been building that has some deeply nested arrays. This will return every level of your array without truncating anything or requiring you to change your php.ini file.
Also, because the json_encoded data is a string it means you can write it to the error log easily
error_log(json_encode($myvar));
It probably isn't the best choice for every situation, but it's a choice!
Solution 3:
I know this is late but it might be of some use:
echo "<pre>";
print_r($array);
echo "</pre>";
Solution 4:
Or you can use an alternative:
https://github.com/php-sage/sage
It works with zero set up and has much more features than Xdebug's var_dump anyway. To bypass the nested limit on the fly with Sage, just use
+d( $variable ); // append `+` to the dump call
Solution 5:
Checkout Xdebbug's var_dump settings, particularly the values of these settings:
xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth