0

Drupal サイトで、1 人のユーザーの 1 つのページに WSOD (死の白い画面) が表示されました。セグメンテーションエラーが原因であることがわかりました。エラーがどこにあるのかわかりませんか?? gdb を使用して PHP コードをデバッグするにはどうすればよいですか???

4

4 に答える 4

2

極端な状況では、私はLinuxを使用するstraceことになりますが、これは主に、問題が内部的なもの(ヘッダー、スタックの問題、クラッシュなど)に関係する場合に使用します。

PHP専用であるため、よりPHP風の方法はxdebugを使用することです。

GDBを使用するには、GDBで使用する他のプログラムと同じように使用します。そこまで到達できない場合は、実際にGDBを使用することもそれほど遠くないでしょう。

ああ、これが命を救うPHPスニペットです:

function the_end(){
    if(($err=error_get_last()))
        die('<pre>'.print_r($err,true).'</pre>');
}
register_shutdown_function('the_end');

注1:サーバーのクラッシュに対処している場合は、上記が機能しない可能性があります。ただし、これは非常にまれです。

注2:すでに他の場所で使用されている場合register_shutdown_functionは、最終的な実行を確実にするために、必ず繰り返してください。例:

function my_other_final_function(){ /* ... */ }
register_shutdown_function('my_final_function');

function the_end(){ /* ... */ }
function the_end2(){ register_shutdown_function('the_end'); }
register_shutdown_function('the_end2');
于 2011-03-26T01:18:06.163 に答える
0

私はgdbでそれを行う方法を知りませんが、これは便利かもしれません:

index.php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

そして、XDebugがさらに役立つと思います

于 2011-03-25T08:02:23.327 に答える
0

サイトで display_errors を true に設定しようとしましたが、うまくいきませんでした。しかし、幸いなことに、デバッグに行く必要はありませんでした。問題は、私が作成したビューにありました。

皆さん、ありがとうございました

于 2011-03-28T17:48:38.907 に答える
-1

エラーは、Webサーバーのエラーログで発生する可能性があります。最初にそこを見てください。

于 2011-03-26T00:59:57.993 に答える