2010-06-11 3 views
2

Первый пользователь perl, и я пытаюсь отладить некоторый скрипт, чтобы следовать логике проекта и, конечно же, синтаксису. Использование Cygwin после ввода в командной строке $perl debugger freezes

$ perl -d sample.pl 

Loading DB routines from perl5db.pl version 1.3 
Editor support available. 

Enter h or `h h' for help, or `perldoc perldebug' for more help. 

main::(sample.pl:5): print 'Hello world.';   # Print a message 
DB<1> 

Он висит на линии> DB < 1. Я не могу ничего ввести в подсказке.

Есть ли причина, по которой сообщение неуместно? или как это непонятно?

Это фактический код программы:

#!/usr/local/bin/perl 
# 
# Program to do the obvious 
# 
print 'Hello world.';  # Print a message 
+0

Пожалуйста, добавьте образец кода, который заставляет отладчик зависать. Кроме того, посмотрите, можете ли вы уменьшить полную оду до минимальной выборки, отображающей проблему. – DVK

+1

Кроме того, попробуйте использовать разметку кода для отображения вывода кода/сценария ... Оба этих вопроса, возможно, внесли свой вклад в проголосовать (я не был таким, чтобы я мог только догадываться) – DVK

+0

Просто чтобы подтвердить - line - ПОЛНОСТЬЮ ПРОГРАММА ПРОГРАММЫ? Thx – DVK

ответ

2

Я модернизировал установку Cygwin дома и столкнулся с подобной проблемой (хотя, возможно, не точно такая же проблема - Perl отладчик еще отвечает на мой вход, но не отображает мой вход и не пропускает мой вход даже после выхода из отладчика). Тем временем, пока я понимаю, что происходит, моим обходным решением является запуск xemacs, запуск оболочки (M-x shell) и запуск отладчика perl из буфера emacs.

Если это сработает для вас, то есть что-то напуганное с вашими настройками терминала cygwin. Если ваш отладчик висит даже в буфере emacs, тогда происходит что-то еще фанки, но я понятия не имею, что это может быть.

0

Извините за возрождение этого трехлетнего вопроса, но я считаю, что у него была проблема с той же проблемой, и он нашел решение.

В моем случае perl -de0 вызывает infocmp от ncurses, который висит странным образом (не может его убить). И infocmp казался жертвой моего антивируса Avast, который указан ниже BLODA как влияющий на Cygwin. Отключение этого разрешило проблему - посмотрите, есть ли у вас какое-либо из перечисленных приложений и попробуйте отключить его (возможно, также попробуйте безопасный режим).

Кроме того, просто переименование infocmp.exe разрешено perl -d нормально работать. В конце я использовал этот подход и оставил работу Avast.

Это может быть и другой исполняемый файл, который запускает perl -d - попробуйте запустить все, что связано с strace, см., Что упомянуто последним исполняемым файлом, и попытайтесь выяснить, является ли это виновником.