Сведения о вопросе

Drake

16:03, 1st July, 2020

Теги

php   eclipse   debugging   phpstorm   xdebug    

Как вы отлаживаете PHP скриптов?

Просмотров: 493   Ответов: 25

Как вы отлаживаете PHP скрипты?

Я знаю об основной отладке, такой как использование отчетов об ошибках. Отладка точки останова в PHPEclipse также весьма полезна.

Каков наилучший (с точки зрения быстрого и легкого) способ отладки в phpStorm или любом другом IDE?



  Сведения об ответе

baggs

18:03, 1st July, 2020

Попробуйте Eclipse PDT для настройки среды Eclipse, которая имеет функции отладки, как вы упомянули. Возможность шагнуть в код-это гораздо лучший способ отладки, чем старый метод var_dump, и печатать в разных точках, чтобы увидеть, где ваш поток идет не так. Когда все остальное терпит неудачу, хотя и все, что у меня есть, это SSH и vim, я все еще var_dump() / die() , чтобы найти, где код идет на юг.


  Сведения об ответе

lesha

18:03, 1st July, 2020

Вы можете использовать Firephp надстройку к firebug для отладки php в той же среде, что и javascript.

Я также использую Xdebug , упомянутый ранее для профилирования php.


  Сведения об ответе

darknet

18:03, 1st July, 2020

Это моя маленькая отладочная среда:

error_reporting(-1);
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_BAIL, 0);
assert_options(ASSERT_QUIET_EVAL, 0);
assert_options(ASSERT_CALLBACK, 'assert_callcack');
set_error_handler('error_handler');
set_exception_handler('exception_handler');
register_shutdown_function('shutdown_handler');

function assert_callcack($file, $line, $message) {
    throw new Customizable_Exception($message, null, $file, $line);
}

function error_handler($errno, $error, $file, $line, $vars) {
    if ($errno === 0 || ($errno & error_reporting()) === 0) {
        return;
    }

    throw new Customizable_Exception($error, $errno, $file, $line);
}

function exception_handler(Exception $e) {
    // Do what ever!
    echo '<pre>', print_r($e, true), '</pre>';
    exit;
}

function shutdown_handler() {
    try {
        if (null !== $error = error_get_last()) {
            throw new Customizable_Exception($error['message'], $error['type'], $error['file'], $error['line']);
        }
    } catch (Exception $e) {
        exception_handler($e);
    }
}

class Customizable_Exception extends Exception {
    public function __construct($message = null, $code = null, $file = null, $line = null) {
        if ($code === null) {
            parent::__construct($message);
        } else {
            parent::__construct($message, $code);
        }
        if ($file !== null) {
            $this->file = $file;
        }
        if ($line !== null) {
            $this->line = $line;
        }
    }
}


  Сведения об ответе

SKY

18:03, 1st July, 2020

Xdebug и плагин DBGp для Notepad++ для тяжелой охоты за ошибками, FirePHP для легких вещей. Быстро и грязно? Ничто не сравнится с dBug .


  Сведения об ответе

VCe znayu

18:03, 1st July, 2020

XDebug имеет важное значение для развития. Я устанавливаю его перед любым другим расширением. Он дает вам трассировку стека при любой ошибке, и вы можете легко включить профилирование.

Для быстрого просмотра структуры данных используйте var_dump() . Не используйте print_r() , потому что вам придется окружить его <pre> , и он печатает только один var за один раз.

<?php var_dump(__FILE__, __LINE__, $_REQUEST); ?>

Для реальной среды отладки лучшее, что я нашел, - это Komodo IDE , но это стоит $$.


  Сведения об ответе

repe

18:03, 1st July, 2020

PhpEd-это действительно хорошо. Вы можете сделать шаг into/over/out функций. Вы можете запускать специальный код, проверять переменные, изменять переменные. Это удивительно.


  Сведения об ответе

SEEYOU

18:03, 1st July, 2020

1) я использую print_r(). В TextMate у меня есть фрагмент для 'pre', который расширяется до этого:

echo "<pre>";
print_r();
echo "</pre>";

2) я использую Xdebug, но не смог заставить GUI работать прямо на моем Mac. Он, по крайней мере, распечатывает читаемую версию стека trace.


  Сведения об ответе

PIRLO

18:03, 1st July, 2020

Я использовал Zend Studio (5.5) вместе с платформой Zend . Это дает правильную отладку, точки останова/перешагивание через код и т. д. хотя и за определенную цену.


  Сведения об ответе

fo_I_K

18:03, 1st July, 2020

Честно говоря, комбинация print и print_r() для распечатки переменных. Я знаю, что многие предпочитают использовать другие, более продвинутые методы, но я нахожу это самым простым в использовании.

Я скажу, что я не полностью оценил это, пока не сделал некоторое микропроцессорное программирование в Uni и не смог использовать даже это.


  Сведения об ответе

SEEYOU

18:03, 1st July, 2020

Xdebug, по словам Дерика Ретанса, очень хорош. Я использовал его некоторое время назад и обнаружил, что его не так просто установить. Как только вы закончите, вы не поймете, как вам удалось обойтись без него :-)

Есть хорошая статья о Zend Developer Zone (установка на Linux не кажется проще) и даже плагин Firefox , который я никогда не использовал.


  Сведения об ответе

darknet

18:03, 1st July, 2020

Я использую Netbeans с XDebug и легким дополнением XDebug FireFox

Надстройка необходима при отладке проектов MVC, поскольку обычный способ запуска XDebug в Netbeans-это регистрация сеанса dbug через url. С надстройкой, установленной в FireFox, вы бы установили свои свойства проекта Netbeans - > Run Configuratuion -> Advanced и выбрали "Do Not Open Web Browser" теперь вы можете установить точки останова и начать сеанс отладки с помощью Ctrl-F5, как обычно. Откройте FireFox и щелкните правой кнопкой мыши значок надстройки в правом нижнем углу, чтобы начать мониторинг точек останова. Когда код достигает точки останова, он останавливается, и вы можете проверить свои переменные состояния и стек вызовов.


  Сведения об ответе

lesha

18:03, 1st July, 2020

Я использую Netbeans с XDebug. Проверьте его на своем веб-сайте для получения документов о том, как его настроить. http://php.netbeans.org/


  Сведения об ответе

baggs

18:03, 1st July, 2020

Буферизация вывода очень полезна, если вы не хотите испортить свой вывод. Я делаю это в одном лайнере, который я могу комментировать/раскомментировать по своему желанию

 ob_start();var_dump(); user_error(ob_get_contents()); ob_get_clean();


  Сведения об ответе

repe

18:03, 1st July, 2020

PhpEdit имеет встроенный отладчик, но обычно я использую echo(); и print_r(); по старинке!!


  Сведения об ответе

fo_I_K

18:03, 1st July, 2020

Для действительно серьезных проблем, которые были бы слишком трудоемкими, чтобы использовать print_r/echo, чтобы выяснить, я использую функцию отладки моего IDE (PhpEd). В отличие от других IDEs, которые я использовал, PhpEd практически не требует настройки. единственная причина, по которой я не использую его для любых проблем, с которыми сталкиваюсь, - это то, что он мучительно медленный. Я не уверен, что медлительность специфична для PhpEd или любого отладчика php. PhpEd не является бесплатным, но я считаю, что он использует один из отладчиков с открытым исходным кодом (например, XDebug ранее упоминалось). Преимущество с PhpEd, опять же, заключается в том, что он не требует установки, которую я нашел действительно довольно утомительной в прошлом.


  Сведения об ответе

VERSUION

18:03, 1st July, 2020

Ручная отладка, как правило, быстрее для меня - var_dump() и debug_print_backtrace() - это все инструменты, которые вам нужны для arm вашей логики.


  Сведения об ответе

SEEYOU

18:03, 1st July, 2020

Я часто использую CakePHP, когда Rails невозможно. Для отладки ошибок я обычно нахожу error.log в папке tmp и завершаю его в terminal с помощью команды...

tail -f app/tmp/logs/error.log

Это дает вам запуск диалогового окна из торта того, что происходит, что довольно удобно, если вы хотите вывести что-то в него mid-код, который вы можете использовать.

$this->log('xxxx');

Это обычно может дать вам хорошее представление о том, что происходит on/wrong.


  Сведения об ответе

screen

18:03, 1st July, 2020

Ну, в какой-то степени это зависит от того, куда идут дела на юге. Это первое, что я пытаюсь изолировать, а затем использую echo/print_r() по мере необходимости.

NB: вы, ребята, знаете, что вы можете передать true в качестве второго аргумента в print_r(), и он вернет вывод вместо того, чтобы печатать его? E.g.:

echo "<pre>".print_r($var, true)."</pre>";


  Сведения об ответе

ITSME

18:03, 1st July, 2020

print_r( debug_backtrace() );

или что-то в этом роде :-)


  Сведения об ответе

COOL

18:03, 1st July, 2020

Komodo IDE хорошо работает с xdebug, даже для отладки remore. Для этого нужно минимальное количество конфигурации. Все, что вам нужно, - это версия php, которую Komodo может использовать локально для пошагового выполнения кода в точке останова. Если у вас есть скрипт, импортированный в проект komodo, то вы можете установить точки останова с помощью щелчка мыши точно так же, как вы бы установили его внутри eclipse для отладки программы java. Удаленная отладка, очевидно, более сложна, чтобы заставить ее работать правильно ( возможно, вам придется сопоставить удаленный url со сценарием php в вашем рабочем пространстве), чем локальная настройка отладки, которую довольно легко настроить, если вы находитесь на рабочем столе MAC или linux.


  Сведения об ответе

qwerty101

18:03, 1st July, 2020

Nusphere также является хорошим отладчиком для php среду nusphere


  Сведения об ответе

DINO

18:03, 1st July, 2020

Существует множество методов отладки PHP, которые могут сэкономить вам бесчисленное количество часов при написании кода. Эффективным, но основным методом отладки является простое включение отчетов об ошибках. Другой немного более продвинутый метод включает использование операторов печати, которые могут помочь точно определить более неуловимые ошибки, отображая то, что на самом деле происходит на экране. PHPeclipse-это плагин Eclipse, который может выделять общие синтаксические ошибки и может использоваться совместно с отладчиком для установки точек останова.

display_errors = Off
error_reporting = E_ALL 
display_errors = On

а также используется

error_log();
console_log();


  Сведения об ответе

qwerty101

18:03, 1st July, 2020

Большинство ошибок можно легко найти, просто включив некоторые ключевые переменные, но это, очевидно, зависит от того, какое приложение вы разрабатываете.

Для более сложных алгоритмов функции step/breakpoint/watch очень полезны (если нет необходимости)


  Сведения об ответе

padenie

18:03, 1st July, 2020

я использую zend studio for eclipse со встроенным отладчиком. Его все еще медленно по сравнению с отладкой с eclipse pdt С xdebug. Надеюсь, они исправят эти проблемы, скорость улучшилась по сравнению с последними релизами, но все еще переступать через вещи занимает 2-3 секунд. Панель инструментов zend firefox действительно упрощает работу (отладка следующей страницы, текущей страницы и т. д.). Кроме того, он предоставляет профилировщик, который будет тестировать ваш код и предоставлять круговые диаграммы, время выполнения и т. д.


  Сведения об ответе

DINO

18:03, 1st July, 2020

В рабочей среде я записываю соответствующие данные в журнал ошибок сервера с помощью error_log().


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться