dm03514
dm03514

Reputation: 55962

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?

Upvotes: 350

Views: 260412

Answers (7)

raveren
raveren

Reputation: 18542

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

Upvotes: 15

Michael Berkowski
Michael Berkowski

Reputation: 270617

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.

Upvotes: 691

some_guy
some_guy

Reputation: 390

Sometimes var_export in a file can be super useful.

file_put_contents(__DIR__.'/temp.txt', var_export($var, true), FILE_APPEND);

For example, if you are debugging something on the production server.

Upvotes: 1

0x58
0x58

Reputation: 427

I know this is late but it might be of some use:

echo "<pre>";
print_r($array);
echo "</pre>";

Upvotes: 16

onin
onin

Reputation: 5760

I'd like to recommend var_export($array) - it doesn't show types, but it generates syntax you can use in your code :)

Upvotes: 5

Chris Schmitz
Chris Schmitz

Reputation: 20940

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!

Upvotes: 45

Captain Insaneo
Captain Insaneo

Reputation: 470

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

Upvotes: 6

Related Questions