Как отладить Perl-программу, начиная с определенной строки? - PullRequest
0 голосов
/ 16 ноября 2018

Среда: Linux CentOS 7 @HPC Интерфейс: командный интерфейс, без графического интерфейса пользователя

В моих сценариях PERL есть логическая ошибка.Это не проходит в цикле "foreach".Я использую команду отладчика ниже:

perl -d /scripts_location/perlscripts.pl

Однако, она запускается шаг за шагом.Мои сценарии имеют почти тысячу строк.Вот мои вопросы:

  1. Как отлаживать мои скрипты из конкретной строки?
  2. Как выяснить, цикл не может быть запущен?И почему цикл не может быть запущен?
  3. Есть ли какой-нибудь ресурс, чтобы показать навыки отладчика в целом процессе?

    Я искал онлайн.Большинство из них объясняют команды.Но мало кто вводит отладку с самого начала.Я имею в виду, что сначала дается простая программа, устанавливается точка останова или другая метка в программе, проверяется вывод или ошибка трассировки и так далее.После просмотра веб-сайтов я не могу знать, как начать отладку с использованием отладчика PERL.Я использовал для отладки моей программы, используя вывод в определенных строках, чтобы проверить правильность вывода или нет.Тем не менее, текущая логическая ошибка не может быть определена таким образом.

  4. Любые дальнейшие предложения и помощь будут высоко оценены.

1 Ответ

0 голосов
/ 16 ноября 2018
  1. После запуска отладчика вы можете сказать, чтобы он продолжал, пока не достигнет заданной строки, например,

    c 124
    
  2. Чтобы выяснить, почему цикл foreach не введен, проверьте список цикла перед его вводом. Вы можете указать отладчику вычислить выражение следующим образом:

    x @values
    

    если цикл похож на foreach my $value (@values). Это, вероятно, скажет вам

    empty array
    

    Чтобы выяснить, почему массив является emtpy, вы можете попробовать «посмотреть» массив

    w @values
    

    и затем запустите скрипт с r. Он остановится, как только изменится любое наблюдаемое значение.

  3. Используйте h для просмотра справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...