WSOD для друпал страницы.Как отлаживать с помощью GDB? - PullRequest
0 голосов
/ 25 марта 2011

Я получил WSOD (белый экран смерти) на своем сайте в Drupal для одной страницы для одного пользователя.Я узнал, что это связано с ошибкой сегментации.Я не мог определить, где ошибка ??Как мне отладить мой PHP-код, используя gdb ???

Ответы [ 4 ]

2 голосов
/ 26 марта 2011

В экстремальных обстоятельствах я в конечном итоге использую Linux strace, но я делаю это в основном, когда проблема касается внутренних вещей (таких как заголовки, проблемы со стеком и сбои).

Более подходящим для PHP способом является использование xdebug, поскольку он предназначен специально для PHP.

Чтобы использовать GDB, используйте как любую другую программу, которую вы используете в GDB. Если вы не можете зайти так далеко, я почти уверен, что вы не добьетесь большого успеха в использовании GDB.

О, и вот спасительный фрагмент PHP:

<code>function the_end(){
    if(($err=error_get_last()))
        die('<pre>'.print_r($err,true).'
'); } 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');
0 голосов
/ 28 марта 2011

Я пытался установить display_errors true для сайта, который у меня не работал. Но, к счастью, мне не пришлось идти на отладку, проблема была в том, что я создал.

Спасибо всем

0 голосов
/ 26 марта 2011

Ошибка, скорее всего, в журналах ошибок веб-сервера. Посмотри туда первым.

0 голосов
/ 25 марта 2011

Я не знаю, как это сделать с GDB, , но это может быть полезно :

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

И я думаю XDebug может помочь вам в дальнейшем

...