Załóżmy, że mam program Pythona, w którym assert został użyty do zdefiniowania sposobu, w jaki powinien być, i chciałbym uchwycić anomalie z pętlą odczytu-ewaluacji, zamiast zgłaszać AssertionError
.Czy mogę wymusić debugowanie pythona w AssertionError?
prawda, mogę mieć
if (reality!=expectation):
print("assertion failed");
import pdb; pdb.set_trace();
ale to jest o wiele bardziej brzydkie w kodzie niż zwykły assert(reality==expectation)
.
Mogłem pdb.set_trace()
zadzwonić w bloku except:
na najwyższym poziomie, ale wtedy straciłbym cały kontekst awarii, prawda? (Mam na myśli, stacktrace mogłyby być odzyskane z obiektu wyjątku, ale nie wartości argumentów, itp.)
Czy istnieje coś takiego jak flaga linii poleceń, która mogłaby przekształcić interpretera python3 w to, czego potrzebuję?
używać Eclipse i uruchomić go w trybie debugowania z punktem przerwania? –
@JoranBeasley: Nie zawsze masz pod ręką IDE. np. kiedy jesteś zalogowany do powłoki SSH. – Constantinius
następnie użyj pdb z wiersza poleceń i użyj punktów przerwań ... http://www.doughellmann.com/PyMOTW/pdb/ 'python -m pdb somescript.py' to twój' --magic' –