Тут столкнулся с граблями отладки многопоточных приложений в perl. Оказывается, до запуска отладчика нужно проэкспортировать переменную окружения PERL5DB_THREADED в ненулевое значение. Скользкость ситуации состоит в том, что вплоть до версии 5.16 отладчик не ругается на непроинициализированное значение, при этом работает неправильно! В новой версии 5.18 perl вываливается с сообщением об ошибке, из которой, впрочем, тоже не понять в чем, собственно, дело.
Ссылка на документацию
http://perldoc.perl.org/perlrun.html#ENVIRONMENT
В общем, решил поделиться, вдруг кому пригодится.
Update: в общем, оказалось, что с PERL5DB_THREADED отладка не работает (по крайней мере в 5.16 и в 5.18). На следующем тестовом примере
#!/usr/bin/perl
use threads;
sub start_thread
{
my @args = @_;
print('Thread started: ', join(' ', @args), "\n");
exit 0;
}
my $thr = threads->create('start_thread', 'argument');
$thr->join();
дебаггер зависает на строчке
my $thr = threads->create('start_thread', 'argument');
Кто-нибудь сталкивался с таким? Это баг в перле, или я что-то не так делаю?