Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to disable PHP cutting off parts of long arguments in exception stack trace?

Sometimes things like this happen:

#0 /some/path(1): Class_Name->exception_trigger()
#1 /some/other/path(5):  get_to('/some/long/path/tha...')

How do I get to see the full arguments for everything?

like image 624
Aaron Yodaiken Avatar asked Aug 14 '10 00:08

Aaron Yodaiken


2 Answers

You'll have to replace the uncaught exception handler. Example:

function exception_handler($exception) {
    $i = 0;
    foreach ($exception->getTrace() as $frame) {
        echo sprintf("#%d %s(%d): %s(%s)\n",
            $i++, $frame["file"], $frame["line"],
            $frame["function"],
            implode(", ", array_map(
                function ($e) { return var_export($e, true); }, $frame["args"])));
    }
}

set_exception_handler('exception_handler');

Now you'll get something like:

#0 /home/glopes/a.php(21): a('loooooooooooooooooooooooooooooooooong argument')
#1 /home/glopes/a.php(24): b()
like image 83
Artefacto Avatar answered Oct 22 '22 17:10

Artefacto


If you're using xdebug you can specify the length and number of variables it spits out.

like image 32
cbednarski Avatar answered Oct 22 '22 17:10

cbednarski