私のPythonコードには、次の行があります。
try:
result = eval(command, self.globals, self.locals)
except SyntaxError:
exec(command, self.globals, self.locals)
command変数は任意の文字列にすることができます。したがって、Pythonデバッガーは/pdbで開始され、 /が戻っているときにアクティブのままである可能性があります。私がやりたいのは、/から戻ったときに通常のプログラム実行が再開されることを確認することです。ただあなたにアイデアを与えるために、これは私が望むおおよその振る舞いです:evalexecevalexecevalexec
try:
result = eval(command, self.globals, self.locals)
try: self.globals['pdb'].run('continue')
except: pass
except SyntaxError:
exec(command, self.globals, self.locals)
try: self.globals['pdb'].run('continue')
except: pass
ただし、このtry行は実行前にデバッガーに表示されますが、デバッガーにコードを表示させたくありません。また、実際には機能しません...コードを繰り返す理由は、コードのデバッグを最小限に抑えるためです。それ以外の場合は、exceptブロックの後で実行できます。
では、どうすればこれを行うことができますか?
補足として:
次の行をIPythonまたはbpythonインタープリターに入力しようとすると、同じ問題が発生し、コードにステップインできることがわかります。
import pdb
pdb.set_trace()
next
ただし、標準のcpythonインタープリターでこれを行うと、pythonプロンプトに戻ります。この理由は明らかに、前者の2つはPythonで実装されており、最後の1つは実装されていないためです。しかし、私の願いは、すべてのコードがpythonの場合でも同じ動作を実現することです。