7

アプリケーションがどこで終了しているかわかりません。デバッガーを気にしたくないし、declare(ticks=1);各ファイルに追加するのは面倒です (私は sed を扱う気分ではありません)。同様の質問がされていますが、これらの制約はありません。

コードが終了している場所を特定するにはどうすればよいですか?

説明:

この質問はPHP スクリプトが終了する場所を決定する最速の方法 に似ていますが、デバッガーなしで機能する解決策を見つけたいと思います。デバッガーでこれを行う方法は知っていますが、そのようなツールに常にアクセスできるとは限りません。

4

2 に答える 2

1

私は通常、変数を使用してイベントをログに記録し、シャットダウン関数を登録して終了ポイントで何をするかを決定します。

class flightRecoder {
   var $data;
   var $err;
   function __constructor() {
     $this->data=array();
   }
   function error($errno, $errstr, $errfile, $errline)
   {
      if ($this->err<$errno) {
         $this->err=$errno;
      }
      $this->note("ERROR! $errno $errstr", $errfile, $errline);
   }
   function note($note, $infile, $atline) {
      $this->data[]="$note in $infile at $atline";
   }
   function finish() {
       if ($this->errno || rand(1,20)==19) {
           ....
       }
   }
}
$log=new flightRecorder();
register_shutdown_function(array($log, 'finish'));
set_error_handler(array($log, 'error'));

あなたの場合は、(致命的なエラーをキャッチするために) error_logging が有効になっていることを確認してから、 exit ステートメントの前にメモを挿入するだけです。

于 2013-08-11T00:05:31.757 に答える