2015-03-03 5 views
4

При отладке моего кода на Python я запускаю скрипт через ipdb из командной строки и устанавливаю несколько точек останова. Затем я делаю некоторые изменения в одном или нескольких модулях и повторно запускаю. Однако, если я просто использую модули запуска do not get reloaded. Чтобы убедиться, что они это делают, я могу существовать и полностью перезапускать Python, но тогда мне нужно сбросить все точки останова, что является утомительным, если у меня их много, и если все сделано снова и снова.Сохранение контрольных точек в файле

Есть ли способ сохранить точку останова в файле в (i) pdb, так что после небольших изменений, которые не меняют номера строк, я могу сбросить точки останова, перезапустить Python + pdb и перезагрузить мои точки останова? Эквивалент Matlabs X = dbstatus, с сохранением/загрузкой X, и установка dbstop(X).

+0

@JoranBeasley Почему это интересно? – gerrit

+0

@JoranBeasley У меня есть код, в котором не хватает десятков уровней стека в глубине модуля рассола. Я не уверен, как иначе я его отлажу. – gerrit

ответ

1

Вы можете сохранить контрольные точки до .pdbrc файла по рабочему пути или по всему миру в домашней директории. Файл должен иметь примерно следующее:

# breakpoint 1 
break /path/to/file:lineno 

# breakpoint 2 
break /path/to/file:lineno 

Вы можете определить точки останова различными способами, как в интерактивном режиме. Так что только break 4 или break method тоже будет работать.

Этот файл работает как для pdb, так и для ipdb, поскольку в дальнейшем все pdb имеет и более.

Bonus:

Вы можете использовать alias более легко сохранить контрольные точки. Например:

# append breakpoint to .pdbrc in current working directory 
# usage: bs lineno 
alias bs with open(".pdbrc", "a") as pdbrc: pdbrc.write("break " + __file__ + ":%1\n") 

Put выше к глобальной .pdbrc и использовать его как это:

> bs 15 

Это добавит точку останова заявление в локальный файл .pdbrc для строки 15 текущего файла ,

Это не идеальное решение, но достаточно близко для меня. Настройте команду на свои нужды.

Read more about aliases here.

+0

Есть ли прямой способ записи/добавления текущего набора точек останова, кроме ввода 'break' и копирования вставки результатов в' .pdbrc'? – gerrit

+0

@gerrit нет, но вы могли бы воспользоваться преимуществами псевдонимов. Обновлен ответ. – ruuter

Смежные вопросы