В недавнем проекте я хочу отладить мою программу в состоянии использования. Производственная среда очень сложная, поэтому я хочу отлаживать программу всякий раз, когда я нахожу проблему.введите pdb с сигналом kill
Это то, чего я хочу достичь: всякий раз, когда я хочу отлаживать, я отправлю сигнал об ошибке в программу и, надеюсь, появится отладчик pdb. Это что-то вроде этого:
import pdb
import signal
import time
def handler(signal, frame):
pdb.set_trace()
signal.signal(signal.SIGTERM, handler)
a=1
while True:
a+=1
time.sleep(1)
Однако, так как я должен запустить программу с nohup
, все выходные данные будут перенаправлены на nohup.out, так что нет никакого способа, я могу взаимодействовать с PDB.
Есть ли что-нибудь подобное для этого?
Мне пришлось использовать 'nohup python myprog.py &' для запуска программы. Когда я убил процесс, он, похоже, не правильно ввел pdb: 'wangc @ lion: ~/workspace/temp> kill 2684 wangc @ lion: ~/workspace/temp> --Return-- >/home/wangc/workspace/temp/wwtest.py (10) обработчик() -> None -> pdb.set_trace() ' –
У вас есть 2 процесса, сражающихся за терминал. Для этого примера нельзя использовать python с символом «&». Сделайте убийство с другого терминала. – meuh
О, мне нужно закрыть оригинальный терминал, потому что я использую ssh из окон. Я не могу оставить программу ssh открытой навсегда. –