Отладчик Python: инициализация переменных не в интерактивном режиме

Я запускаю код с помощью pdb. Выполнение прерывается в строке 3, я вставляю setvars и меняю некоторые переменные.

python -m pdb -c "b 3" -c c -c "alias setvars aaa=1;bbb=1" somecode.py 3

Это делает то, что я хочу, в интерактивном режиме, но я хотел бы запустить это как пакетное задание, потому что я хотел бы запустить его в кластере. Итак, я хотел бы установить переменные aaa и bbb в точке останова 3, а затем продолжить без какого-либо взаимодействия с пользователем.

Является ли это возможным? или, может быть, я использую не тот инструмент для этого?

ПРИМЕЧАНИЕ: это дополнительный вопрос Инициализация отладчика python файлом

Как насчет изменения вашего скрипта somecode.py, чтобы вы могли передавать желаемые значения в качестве аргументов?

bruno desthuilliers 15.05.2018 13:56

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

simona 15.05.2018 14:32

Что ж, тогда это еще один вопрос ... но ответ на ваш вопрос «возможно, я использую неправильный инструмент», очевидно, «да» - pdb - это пошаговый отладчик, а не инструмент для передачи аргументов скрипту.

bruno desthuilliers 15.05.2018 14:57

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

simona 15.05.2018 15:06

Насколько я понимаю, это не «законное использование» пошагового отладчика, а полный WTF. Если вы хотите обрабатывать исключительные ситуации, используйте исключения и обработчики исключений. Если вам нужны переменные для каждой среды, используйте настройки для каждой среды. Пошаговый отладчик - это инструмент разработчика интерактивный, точка.

bruno desthuilliers 15.05.2018 15:15

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

simona 15.05.2018 15:19

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

bruno desthuilliers 15.05.2018 15:24
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
7
24
0

Другие вопросы по теме