Я запускаю код с помощью 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 файлом
конечно. но я также пытаюсь изучить возможности pdb, потому что я никогда не находил руководства, кроме простейших команд
Что ж, тогда это еще один вопрос ... но ответ на ваш вопрос «возможно, я использую неправильный инструмент», очевидно, «да» - pdb - это пошаговый отладчик, а не инструмент для передачи аргументов скрипту.
Я думаю, что возможно, что кто-то захочет отладить код в пакетном режиме. иногда аномальное поведение возникает только в определенном контексте. допустим, у вас есть код, который не работает только с некоторыми конкретными данными, которые вы можете загрузить только в неинтерактивном режиме. Затем вы хотите заставить некоторую переменную быть чем-то другим во время выполнения. Я думаю, что это законное использование отладчика, мешающее поведению во время выполнения, не так ли?
Насколько я понимаю, это не «законное использование» пошагового отладчика, а полный WTF. Если вы хотите обрабатывать исключительные ситуации, используйте исключения и обработчики исключений. Если вам нужны переменные для каждой среды, используйте настройки для каждой среды. Пошаговый отладчик - это инструмент разработчика интерактивный, точка.
хорошо, я понимаю вашу точку зрения. Позвольте мне просто добавить, что когда я говорю, что использую отладчик, большинство людей спрашивают, почему бы вам просто не использовать print(), и это правда, что для отладки кода вам не нужен отладчик, но вы можете просто изменить код. . Я не хочу ничего спорить, просто уточняю, почему я задал этот вопрос в первую очередь
Я действительно использую pdb - logging (правильное ведение журнала с использованием библиотеки logging), и unittests действительно экономят много времени и усилий, но не соответствуют нормам пошагового отладчика для некоторых проблем - поэтому я не хочу сказать, что «вы не должны использовать pdb ", просто это неподходящий инструмент для того, что вы хотите здесь делать, ни в коем случае не в отладке, не в форме.






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