Perl Ptkdb следовать в системный вызов - PullRequest
1 голос
/ 22 апреля 2011

Я использую отладчик ptkdb для Perl. Я запускаю скрипт из скрипта с помощью system (); функция. Но я не могу войти в системный вызов, отладчик просто перепрыгивает через него. Как я могу сделать отладчик на самом деле отладить то, что происходит внутри системного вызова?

1 Ответ

2 голосов
/ 22 апреля 2011

system () разветвляет процесс и запускает его как команду оболочки.Отладчик Perl не будет следовать от родительского процесса Perl до разветвленной команды оболочки.

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

1) Вы можете отладить сам вызов оболочки, если онделать то, что вы ожидаете это сделать?(Запуск вручную, запуск из strace / dtrace)

2) Вы можете напечатать любые переменные, которые вы отправляете в него.Правильно ли переданы переменные?

3) Вы можете проверить возвращение команды, чтобы увидеть, выполняет ли она то, что вам нужно.

Кроме того, вы уверены, что system () - это то, что вам нужно??Из системы perldoc:

Это не то, что вы хотите использовать для захвата выходных данных команды, для этого вы должны использовать просто backticks или qx //, как описано в STRING в perlop,Возвращаемое значение -1 указывает на ошибку при запуске программы или ошибку системного вызова wait (2) (проверьте $! По причине).

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