2010-08-14 98 views

回答

11

您必须替换未捕获的异常处理程序。例如:如果你使用xdebug可以specify the length and number of variables它吐出

 
#0 /home/glopes/a.php(21): a('loooooooooooooooooooooooooooooooooong argument') 
#1 /home/glopes/a.php(24): b() 
+1

请记住,$ frame ['file']并不总是被定义的,因此您需要先检查它。在这种情况下,PHP的堆栈翻转器返回'[内部函数]'。此外,你可能想看看是否定义了$ frame ['class'],并且在函数是成员函数的情况下也转储它。 – DaveBurns 2012-09-19 18:37:44

5

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'); 

现在,你得到的东西等。

+0

+1对于建议xdebug – NullUserException 2010-08-14 02:23:31

+0

好主意,但它不适用于我们通常禁用的产品。 – 2017-03-30 11:28:15