0

我在我的 Drupal 站点中为单个用户的单个页面获得了 WSOD(死屏白屏)。我了解到这是由于分段错误。我无法发现错误在哪里??如何使用 gdb 调试我的 PHP 代码???

4

4 回答 4

2

在极端情况下,我最终会使用 Linux strace,但我主要是在问题涉及内部问题(例如标题、堆栈问题和崩溃)时这样做。

更 PHP 的方式是使用 xdebug,因为它是专门为 PHP 设计的。

要使用 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 回答