Каковы хорошие методы отладки Perl? - PullRequest
26 голосов
/ 24 июня 2009

Есть ли другие способы отладки Perl, кроме Data::Dumper и perl -d?

Ответы [ 18 ]

16 голосов
/ 24 июня 2009

Доступные инструменты для отладки

В Perl доступно несколько инструментов для отладки и подобных задач.


Встроенный отладчик командной строки.

perl -d yourcode.pl

Devel :: ptkdb

Графический отладчик на основе Perl / Tk, автор Andrew E. Page.


Regex Coach

Это бесплатный инструмент, работающий как на Linux, так и на Windows, написанный на Lisp . Исходный код не имеется в наличии.


Rx: отладчик Regex для Perl

Отладчик Perl Regex и статья об этом, написанная Марком Джейсоном Доминусом.


GUI для отладчика Perl

13 голосов
/ 24 июня 2009

Есть много вещей, которые могут вам помочь:

  • Devel :: Trace - печатать каждую строку, которая выполняет
  • Carp :: REPL - перейти в REPL *, когда код выдает предупреждение
  • Devel :: ebug - отладчик, которым вы можете управлять из кода Perl
  • Enbugger - использовать отладчик во время выполнения независимо от того, был ли ваш процесс запущен с отладкой
9 голосов
/ 24 июня 2009

Мне нравится Devel :: Trace . В основном это дает вам дамп выполнения, показывая пути к коду.

С другой стороны, разработка через тестирование сейчас в моде, поэтому вас также могут заинтересовать такие инструменты профилирования, как Devel :: NYTProf для высокотехнологичного тестирования. Посмотрите это сообщение в блоге Тима Бунса для интересного обзора.

8 голосов
/ 24 июня 2009

Я использую ActiveState Komodo для пошаговой отладки.

Eclipse имеет пошаговый отладчик для своего EPIC плагина .

Лично я предпочитаю версию ActiveState. Это кажется более надежным и стабильным, но оно стоит (и работа оплачивается за меня). Если бы это были мои деньги, я бы использовал Eclipse и EPIC, поскольку они бесплатны.

7 голосов
/ 24 июня 2009

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

5 голосов
/ 24 июня 2009

Мой обычный набор инструментов:

  • операторы печати и Data :: Dumper для простых случаев
  • perl -d

Этого обычно достаточно. Есть ддд ; Я слышал, что это довольно мило, но никогда не играл с ним.

Для некоторых задач (которые на самом деле не отлаживаются, но близки к ним) я использую Devel :: NYTProf .

4 голосов
/ 24 июня 2009

Некоторые люди используют операторы print, чтобы увидеть, что происходит в разделах программы, которые не выполняют то, что, по их мнению, будет делать код. (Т.е. как способ проверки того, что на самом деле содержится в переменной в заданной точке выполнения.)

Тем не менее, вопрос довольно расплывчатый. Есть ли что-то, что вы пытаетесь сделать, с чем Data :: Dumper и perl -d не помогают?

4 голосов
/ 24 июня 2009

В зависимости от того, что вы делаете, Log :: Log4perl обеспечивает простой способ управления отладочным стилем печати, особенно в больших приложениях:

  • обеспечивает различные уровни ведения журнала (отладка, информация, ошибка, предупреждение, фатальная ошибка)
  • управляется из конфигурационных файлов (например, легко отлаживать в блоке разработки, только ошибки в рабочем блоке)
  • настраивается по разделам вашего приложения (например, веб-приложение в одном файле журнала на одном уровне, сценарии cron в другом на другом уровне журнала)
  • настраивается классом - легко успокаивать шумные модули или добавлять детальную отладку где-то глубоко внутри приложения
3 голосов
/ 29 сентября 2010

Emacs, руки вниз.

   emacs my_script.pl
   M-x perldb
   Emacs will prompt you :
   Run perldb (like this): perl my_script.pl
   Hit enter (or add command line switches)

   Now use the debugger as usual.
   Type 'c' to continue executing the code, which will now follow
   your code as you execute through it.

   Emacs is fully integrated with its debuggers and will make debugging perl code nearly trivial.
3 голосов
/ 24 июня 2009

Test :: More для написания основных тестов, Hook :: LexWrap, Test :: MockObject, Test :: Deep, Test :: MockTime, Test :: WWW :: Mechanize и многие другие для расширенных тестов. Атрибут :: Подпись для проверки подпунктов. Carp :: Assert для контрактного программирования.

Devel :: Ebug :: Wx или Devel :: ptkdb (и вскоре лучшая поддержка в Padre) могут быть использованы для упрощения отладки.

...