Можно ли установить точку останова в отладчике Perl без изменения источника? - PullRequest
4 голосов
/ 16 января 2011

Я перебираю чужой код, чтобы найти то, что ломает меня при определенных, непроверенных (не спрашивайте меня, почему среда тестирования дает отличные результаты от живого использования, вот что я пытаюсь выяснить) обстоятельства.Каждый раз, когда я немного углубляюсь в код до того, как произойдет сбой, есть ли способ установить точку останова без изменения исходного кода?так что мне не нужно каждый раз шаг, шаг, следующий, следующий, следующий?или измените источник каждый раз.Также примите во внимание, что мне нужно пройтись по нескольким файлам, так как эти программы широко используют библиотеки, а сама ошибка, похоже, находится в одной из этих библиотек.Например, я знаю, что мне нужно продолжать выполнение, пока я не достигну номера строки файла.Кроме того, библиотеки загружают библиотеки, я был как минимум на 3-5 библиотек глубже, когда проверял последний раз.

Примечание: я новичок в отладчиках вообще

Ответы [ 2 ]

6 голосов
/ 16 января 2011

Звучит так, будто вы хотите команду b в интерактивном отладчике Perl, которую можно использовать для установки будущих точек останова. Или, может быть, команда c, которая работает как GDB until, если дан аргумент.

Вы также можете автоматически устанавливать определенные контрольные точки при каждом запуске отладчика с помощью afterinit в .perldb. Или используйте команду R, которая перезапускает отладчик (и отлаживаемую программу), сохраняя точки останова и другую информацию.

3 голосов
/ 08 июня 2012

Вы можете использовать комбинацию команды b , команды f , содержимого % INC и c Команда для быстрой навигации по вашему коду.

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

Если вы хотите разбить определенную точку в модуле, посмотрите на запись для этого модуля в % INC (ключ будет 'Some / Module.pm' если модуль был Some :: Module ). Значением этого ключа является файл, из которого был загружен модуль. Если модуль еще не загружен, вы можете использовать в командной строке отладчика, а затем заглянуть в % INC .

Когда у вас есть файл, содержащий код, в котором вы хотите установить точку останова, выполните f filename , чтобы переключить l (список) и команды текстового поиска отладчика (* 1031) * / и ? - вперед и назад соответственно), чтобы посмотреть на этот файл, затем установить желаемую точку останова и c , чтобы достичь ее.

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