Вход :: Log4perl

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

Ответы на вопрос(4)

Решение Вопроса

то-то вроде

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

print "Test";

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

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

> b [line] [condition]

и ударил

> c

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

 Thomson15 янв. 2011 г., 03:35
Это прекрасно. Есть ли похожий синтаксис в Windows?
 ivancho15 янв. 2011 г., 19:52
Я полагаю, что perl будет уважать переключатели, даже если фактический запуск исполняемого файла perl не совпадает с тем, что указан в shebang, то есть, даже если приведенный выше скрипт запускается, например, как C: \ Perl \ bin \ perl.exe script.pl, он все равно должен запустить отладчик

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

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

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

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

 Thomson14 янв. 2011 г., 14:45
Вы имеете в виду, что если моя программа не запускается в отладчике, я не могу использовать $ DB :: single как положено?
 tchrist14 янв. 2011 г., 16:11
@ Томпсон: Да, это верно. Если вы хотите, чтобы Perl-программа была отлажена, вы должны запустить ее в отладчике. Насколько мне известно, такого рода вещи справедливы для большинства видов отладки в реальном времени на основе исходного кода в других языках - несмотря на посмертные вскрытия coredumps.
 yati sagade20 окт. 2015 г., 11:49
@ tchrist Я не уверен, как это работает внутри Python, но я могу сделатьimport pdb; pdb.set_trace() где-нибудь в коде, чтобы сломать в этой точке и войти в отладчик. Мне не нужно запускать скрипт с какими-либо специальными модификаторами отладки.

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

Больше

 Michael Carman14 янв. 2011 г., 17:07
@ Thomson Tan: В этом случае регистрация будет работать лучше. Взгляни наВход :: Log4perl.
 Thomson14 янв. 2011 г., 14:28
Мой фрагмент кода на Perl является частью большой системы, и я не могу контролировать, как он запускается. Кажется, я могу только пересмотреть исходный файл, чтобы сделать это.

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

 Thomson14 янв. 2011 г., 14:30
Может ли это работать, когда я не могу изменить метод запуска (командная строка на исполняемый файл perl)?
 Thariama14 янв. 2011 г., 14:47
необходим метод запуска, вы не можете использовать отладчик без опции -d

Ваш ответ на вопрос