[英]How to define a new function in pdb
為什么在運行pdb
時不能定義新函數?
以 myscript.py 為例:
#!/gpfs0/export/opt/anaconda-2.3.0/bin/python
print "Hello World"
print "I see you"
如果我運行python -m pdb myscript.py
並嘗試以交互方式定義一個新函數:
def foo():
我收到錯誤:
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
為什么是這樣?
我認為它不支持多行輸入。 您可以通過從 pdb 中生成交互式會話來解決。 在交互式會話中完成后,使用 Ctrl+D 退出。
>>> import pdb
>>> pdb.set_trace()
(Pdb) !import code; code.interact(local=vars())
(InteractiveConsole)
In : def foo():
...: print('hello in pdb')
...:
In : # use ctrl+d here to return to pdb shell...
(Pdb) foo()
hello in pdb
您可以使用;
在一行語句中定義您的函數;
而不是縮進,像這樣:
(Pdb) def foo(): print 'Hello world'; print 'I see you'
(Pdb) foo()
Hello world
I see you
我能夠從pdb
命令行導入 python 模塊。
如果您可以導入 python 模塊,那么您應該能夠在文件中定義您的函數並只導入文件。
如果您的應用程序碰巧有 IPython 作為依賴項,您可以直接從 ipdb 進入功能豐富的 IPython REPL:
import IPython; IPython.embed()
從內部來看,如果您運行 IPython 的魔法命令whos
,您應該會看到當前pdb
框架中所有本地定義的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.