Розумний pdb_trace () - як поставити брейкпоінт на конкретну ітерацію

Розумний pdb_trace () - як поставити брейкпоінт на конкретну ітерацію
  • Python
  • lxml

Програма під час роботи виводить в stdout весь лот.


Зараз, для налагодження використовую:

«C» => «ENTER», «c» => «ENTER», «c» => «ENTER», «c» => «ENTER», «c» => «ENTER»


Потрібно реалізувати те ж саме на автоматі, двома з наступних варіантів, описаних в питаннях:

1. брейк-поінт, який вкаже, на який з таких ітерацій потрібно встановитися - тоді питання полягає в тому, як такий поставити?

2. як поставити умову зупинити виконання коду, по входженню певного тексту (текст помилки мені знаком і виникає один раз, рівно на цьому моменті і потрібно зупинити)?


P.S.> І ще дрібне питання - як відмотати назад \ вперед на кілька кроків (або один крок), next'ов і continue'ов?


P.P.S> 2 варіанти, які вказав - це єдині рішення, або є ще якісь, які простіше реалізуються?

Можна просто тиснути Enter - він повторює останню введену команду. Зручно також користуватися n [ext] - він виконує команди, не заходячи в викликаються функції або unt [il] - виконує команди до тих пір, поки не виявиться рядком нижче (т. Е. Якщо в останньому рядку циклу сказати until. Він промотає весь цикл і зупиниться на наступній команді. Щоб поставити умовний breakpoint, потрібно сказати b [reak] ([file:] lineno | function) [, condition]. наприклад, break 42, a = 5. Команда переходу до потрібної рядку - j [ump ]. От щодо відлову типової помилки не скажу - таким не користуюся. Але взагалі таке начебто є - наприклад, можна загорнути виклик програми в собст венний try / except. відловити помилку, подивитися її текст, і якщо збігається - запустити відладчик (ось тут не пам'ятаю, як з коду його запустити), щоб подивитися стек викликів (w [here]).

До речі, він вам помилку виводить, а traceback узагалі не друкує, чи що?

Див. Також керівництво до модуля і внутрішню довідку (h [elp]).

З «C» цей підхід не працює - необхідно повторювати команду ...
в моєму випадку це можна робити до 10 000 раз, а вискочить помилка (я знаю, що) кроці на 7 000+ ...