Отладка программ python в emacs

Как отлаживать программы на Python в emacs?

Я использую python-mode.el

Я получаю ссылку, как

import pdb; pdb.set_trace();

но не уверен, как его использовать.


person Community    schedule 24.02.2010    source источник


Ответы (3)


Введите M-x cd, чтобы изменить каталог на местонахождение программы, которую вы хотите отлаживать. Введите M-x pdb. Вам будет предложено Run pdb (like this): pdb. Введите название программы (например, test.py).

В приглашении (Pdb) введите help, чтобы узнать, как использовать pdb.

В качестве альтернативы вы можете поставить

import pdb 
pdb.set_trace()

прямо внутри вашей программы (например, test.py). Теперь введите M-x shell, чтобы получить приглашение оболочки. Когда вы запустите свою программу, вы попадете в pdb в точке, где выполняется pdb.set_trace().

person unutbu    schedule 24.02.2010
comment
Использование pdbtrack (через оболочку M-x), вероятно, является лучшим решением. Таким образом гораздо проще управлять каталогами и средами. - person matt harrison; 24.02.2010
comment
@matt с Mx pdb вы можете установить точки останова в исходных файлах, и курсор будет показывать текущую позицию выполнения по мере прохождения: twistedmatrix.com/documents/current/core/howto/ - person Justin Smith; 26.02.2010
comment
Графическое руководство можно найти здесь: sunnyeves.blogspot. ком/2011/04/ - person gt6989b; 20.04.2012
comment
stackoverflow.com/questions/9167614/ может быть полезно, если у вас нет исполняемого файла pdb, см. комментарий @sanityinc: создайте сценарий оболочки pdb в любом из каталогов на вашем пути с текстом: #! /bin/bash exec python -m pdb $@ - person 0fnt; 12.05.2012
comment
Почему метод один не работает для меня. emacs жалуется, что не может найти предоставленный файл .py. - person q0987; 01.03.2013
comment
кто-нибудь знает, как получить «красную точку» на контрольных точках, подобных gdb? - person bph; 21.03.2016

Для меня мне нужно было заменить «pdb» по умолчанию на

python -m pdb myscript.py
person Ben    schedule 03.10.2013

Пакет realgud (доступен в MELPA) поддерживает PDB (среди бесчисленного множества других отладчиков) и имеет хост изящных функций, которых нет в Emac's PDB.

Мне больше всего нравится режим коротких клавиш. Как только вы начнете отлаживать программу, вы можете нажать n, s, c и т. д. прямо в окне исходного кода, вместо того, чтобы вводить эти команды в буфер PDB. Он также поддерживает сочетания клавиш в стиле Visual-Studio с функциональными клавишами (f10, f11, f5 и т. д.).

После установки RealGUD нужно запустить M-x load-feature realgud для его загрузки, а pdb можно запустить с M-x realgud:pdb.

person Clément    schedule 28.05.2016
comment
Должен добавить, что у меня есть небольшой конфликт интересов. Пакет показался мне настолько аккуратным, что я начал над ним работать, а теперь стал со-мейнтейнером. - person Clément; 09.07.2016
comment
реалгуд выглядит потрясающе! Интересно, насколько просто было бы интегрировать вход в realgud/emacs с существующими потоками ввода отладки, такими как установка трассировки и запуск теста с чем-то вроде pytest. Любые советы здесь? Возможно, это сделает то, что я ищу: github.com/ реалгуд/реалгуд/ - person mindthief; 16.08.2019
comment
Realgud не поддерживается в emacs-25, при попытке установить его выдается сообщение об ошибке «Пакет emacs-25 недоступен», к сожалению, пока он не будет поддерживаться emacs-25, мне нужно будет найти альтернативный отладчик Python для emacs-25 или просто продолжать использовать pdb без интеграции с emacs - person AmazingMiki; 05.02.2020
comment
У вас все наоборот: требуется emacs-25, и вы пытаетесь установить его в более старый Emacs. (см. melpa.org/#/realgud для зависимостей) - person Clément; 05.02.2020