2013-06-16 6 views
14

iPython запоминает историю команд, если я обычно запускаю ipython, например. чтобы запутаться в тестировании основных вещей в repl, но я хотел бы получить команды отладки из предыдущего сеанса отладки, и я делаю свою отладку, просто запуская свою программу как обычно, где программа содержитipython ipdb, при вызове через ipdb.set_trace(), не запоминает историю команд при отладке

import ipdb 
def info(type, value, info): 
    import traceback 
    traceback.print_exception(type, value, info) 
    ipdb.pm() 

import sys 
sys.excepthook = info 
trace = ipdb.set_trace 

Который должен установить его, поэтому я могу написать trace() в любой точке моей программы, чтобы начать отладку там, когда я запускаю программу, или для ее автоматического запуска отладки postmortem, когда она умирает сама по себе.

Python с IPython был дрожжами за пределами других языков, когда дело доходит до быстрых итераций коды/тестов, и я просто так близко к нирване в этой точке ...

+0

Думаю, я где-то видел что-то о SQLite. Может быть, как только я установлю это, он начнет работать? –

+0

Похоже, вы попали [эта ошибка] (https://github.com/ipython/ipython/issues/682) или связанный с ней в ipython. – pwaller

+0

Черт. 3 месяца, и я даже не могу вспомнить, была ли эта проблема решена или нет, я не стал возиться с моим одним скриптом python, который использует это. Я чувствую, что ipython просто ничего не запомнит * ничего *, если SQLite не настроен, что указывает на то, что это ошибка, если он некоторое время запоминал материал. Мне придется исследовать это позже; мой скрипт кикстарта уже настроен на 'pip install' ipython и sqlite (и readline) автоматически. @pwaller спасибо за ссылку, что панировочные сухари хороши, чтобы иметь –

ответ

3

pudb Я использую вместо этого. Это позволяет получить реальную оболочку ipython от отладчика и все сохраненные команды