在我的 python 代码中,我有这一行:
try:
result = eval(command, self.globals, self.locals)
except SyntaxError:
exec(command, self.globals, self.locals)
command
变量可以是任何字符串。因此,python 调试器pdb
可以在 / 中启动,eval
并且在/返回exec
时仍然处于活动状态。我想要做的是确保从/返回时恢复正常的程序执行。只是给你一个想法,这大约是我想要的行为:eval
exec
eval
exec
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 提示符。之所以会这样,显然是因为前两个是用python实现的,而最后一个不是。但我的愿望是即使所有代码都是 python 也能获得相同的行为。