Инициализация python-отладчика с помощью файла

Я запускаю код с pdb

python -m pdb somecode.py 3

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

РЕДАКТИРОВАТЬ: можно ли установить точки останова, перейти к следующей точке останова, установить переменную, перейти к следующей точке останова?

1 ответ

Решение

Ты можешь использовать -c вариант (только Python 3). Цитата документов ( https://docs.python.org/3/library/pdb.html):

Новое в версии 3.2: pdb.py теперь принимает опцию -c, которая выполняет команды, как если бы они были указаны в файле.pdbrc, см. Команды отладчика.

установить точку останова в строке 3 (и перейти к ней - для этого нужна вторая '-c'):

python -m pdb -c "b 3" -c c somecode.py 3

о последовательности инструкций: да, несколько опций -c = несколько инструкций. Но похоже, что с помощью этого метода вы не можете установить переменные: -c "aaa=1" не работает. Вы можете попробовать использовать alias команда для предопределения некоторых переменных через аргументы командной строки - дополнительная команда вручную в pdb и все необходимое будет установлено:

python -m pdb -c "b 3" -c c -c "alias setvars aaa=1;bbb=1" somecode.py 3
(Pdb) setvars
(Pdb) aaa
1
(Pdb) bbb
1
(Pdb)
Другие вопросы по тегам