Могу ли я вставить точку останова в исходную Perl-программу? - PullRequest
16 голосов
/ 14 января 2011

Мне нужен отладчик запуска perl-программы, когда возникает какое-то условие. На каком-то другом языке есть оператор debug (), поддерживаемый библиотекой, есть ли похожий оператор в perl?

Ответы [ 4 ]

34 голосов
/ 14 января 2011

Если я вас правильно понимаю, вам нужно использовать в своем коде определенную переменную отладчика - $DB::single. Установка истинного значения в вашем коде приведет к остановке отладчика в этой строке.

$x = 1234;
$DB::single = 1;
enter_problematic_sub_now();

Ваш код остановится на строке с $ DB :: single, установленным в 1.

Конечно, если вы не можете на самом деле убедиться, что ваш код работает в отладчике, тогда у вас полностью другая проблема. Вам потребуется , чтобы запустить код через perl -d.

7 голосов
/ 14 января 2011

Вы пытались добавить ключ -d в строку shebang вверху вашего скрипта?Что-то вроде

#!/usr/bin/perl -d
use strict;
use warnings;
$|=1;$\="\n";

print "Test";

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

Редактировать: затем вы можете установить точку останова на определенной строке с определенным условием, используя

> b [line] [condition]

и нажав

> c

, чтобы продолжить выполнение сценария -при выполнении условия отладчик остановится на указанной строке

3 голосов
/ 14 января 2011

Ну, есть кое-что, что позволит вам делать что-то вроде точек останова, но функциональность шире: Отладчик Perl .

2 голосов
/ 14 января 2011

По сути, переключатель -d позволяет вам общаться с исполняемым файлом perl и позволяет исполняемому файлу perl общаться с вами.

Подробнее

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