Ну, не совсем, это просто список всех вещей, которые я считаю модными и полезными при использовании pdb в Python.

Итак, прежде всего, как мне поставить точку останова?

import pdb; pdb.set_trace()

Да, один лайнер, все, что вы хотите.

Хорошо… теперь я хочу увидеть вещи.

Вы можете получить глобальные и локальные переменные, просто позвонив:

locals()
globals()

Это отобразит все переменные в области видимости с их значениями. Необычно, да?

Ты можешь использовать:

dir()

Если вас не очень интересуют ценности. Но… если мы что-то просим, ​​мы можем захотеть увидеть все.

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

Просто красивая распечатка. Как? Нравится:

pp locals() # pretty print

Ага, аккуратно!

И наконец... не заморачивайтесь над кодом. Вы никогда не знаете, когда закончите отладку. На прошлой неделе я отлаживал код с другом, и мы закончили просмотр трассировок из библиотеки многопоточности. Не круто, когда вы действительно хотите сосредоточиться на других вещах.

Итак, ярлыки для перемещения по линиям:

s # step
n # next
r # return
c # continue

Итак, шаг — это всего лишь одна строка. Вы выполняете строку, которая находится под вашим курсором, и останавливаетесь, как только можете остановиться.

Next очень похож, но немного эффективнее. Основное отличие заключается в том, что next будет выполнять вызываемые функции почти на полной скорости и переходить к следующей строке в текущей функции, тогда как step будет выполняться строка за строкой в ​​текущей и вызываемой функциях.

Возврат очень удобен, когда вы застряли в коде, который не хотите проверять. В основном он возвращается к точке возврата текущей функции, которую вы выполняете.

И, наконец, продолжайте. Да, все идет прямо к следующей точке останова.

Есть и другие полезные приемы для pdb, но я в основном использую их и хочу поделиться с вами. Проверьте документы (да, RTFM и F означает Fancy), чтобы узнать больше!

Удачного взлома!