drupal 页面的 WSOD。如何使用gdb进行调试?

发布于 2024-10-26 16:22:28 字数 94 浏览 8 评论 0原文

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

I got a WSOD (white screen of death) in my Drupal site for a single page for a single user. I have learned that it is due to segmentation error. I couldnt spot where the error is?? How do I debug my PHP code using gdb???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蓬勃野心 2024-11-02 16:22:28

在极端情况下,我最终会使用 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');

In extreme circumstances, I end up using Linux strace, but I do this mainly when the issue concerns internal stuff (such as headers, stack issues and crashes).

The more PHP-esque way is to use xdebug, since it's specifically for PHP.

To use GDB, use like any other program you would use under GDB. If you can't get that far, I'm pretty sure you won't get far in actually using GDB either.

Oh, and here's a life-saver PHP snippet:

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

Note 1: If you're dealing with server crashes, there's a good chance the above won't work. This is quite rare though.

Note 2: If register_shutdown_function is already used elsewhere, be sure to repeat it, in order to ensure final execution, example:

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');
后来的我们 2024-11-02 16:22:28

我不知道如何使用 gdb 来做到这一点,但这可能很有用

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

我猜XDebug 可以进一步帮助您

I dont know how to do it with gdb, but this could be usefull:

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

And i guess XDebug could help you further

难理解 2024-11-02 16:22:28

我尝试将 display_errors 设置为 true,但该网站对我不起作用。
但幸运的是,我不必进行调试,问题出在我创建的视图上。

谢谢大家

I tried to set display_errors true for the site which didnt work for me.
But luckily I didnt have to go for the debugging, issue was with view that I had created.

Thank you all

数理化全能战士 2024-11-02 16:22:28

该错误很可能出现在您的 Web 服务器错误日志中。先看看那里。

The error is most likely in you web server error logs. Look there first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文