Python 输入pdb将禁用后续的set_trace()调用
我输入Python 输入pdb将禁用后续的set_trace()调用,python,signals,pdb,Python,Signals,Pdb,我输入pdb调试器,然后以交互方式调用函数。函数中有一个set\u trace()调用,我希望调试器停止在那里。不幸的是,调用被忽略,就好像后续的调试器调用根本不存在一样。代码如下: import pdb def f(): print('enter') pdb.set_trace() print('exit') pdb.set_trace() 这是输出。请注意,永远不会调用“输入”和“退出”之间的set_trace() --Return-- > /home/c
pdb
调试器,然后以交互方式调用函数。函数中有一个set\u trace()
调用,我希望调试器停止在那里。不幸的是,调用被忽略,就好像后续的调试器调用根本不存在一样。代码如下:
import pdb
def f():
print('enter')
pdb.set_trace()
print('exit')
pdb.set_trace()
这是输出。请注意,永远不会调用“输入”和“退出”之间的set_trace()
--Return--
> /home/chucknorris/test2.py(8)<module>()->None
-> pdb.set_trace()
(Pdb) f()
enter
exit
(Pdb)
——返回--
>/home/chucknorris/test2.py(8)(->无
->pdb.set_trace()
(Pdb)f()
进入
出口
(Pdb)
当从调试器以交互方式调用函数时,如何触发对set_trace()
的后续调用?我想我对您试图执行的操作感到困惑。使用pdb.set_trace()
,可以进入调试器。之后,您必须设置一个。我进入调试器,然后以交互方式调用一个函数。函数中有一个set\u trace()
调用,我希望调试器停止在那里。不幸的是,这个调用被忽略了,好像set_trace()
根本不存在一样。@rkesh,我把问题缩短到了要点,希望现在更清楚。我认为答案是后续调用set_trace
不会触发断点(文档对此不是很明确,pdb.py源代码也不是)。第一次输入调试器时,您已经在调试器中,因此从那时起,必须使用断点。可以定义您自己的类,该类继承自pdb.pdb,并添加此额外功能(即覆盖默认的set_跟踪方法)。我现在没有时间研究这个问题,但听起来很有趣。我想我对你想做的事感到困惑。使用pdb.set_trace()
,可以进入调试器。之后,您必须设置一个。我进入调试器,然后以交互方式调用一个函数。函数中有一个set\u trace()
调用,我希望调试器停止在那里。不幸的是,这个调用被忽略了,好像set_trace()
根本不存在一样。@rkesh,我把问题缩短到了要点,希望现在更清楚。我认为答案是后续调用set_trace
不会触发断点(文档对此不是很明确,pdb.py源代码也不是)。第一次输入调试器时,您已经在调试器中,因此从那时起,必须使用断点。可以定义您自己的类,该类继承自pdb.pdb,并添加此额外功能(即覆盖默认的set_跟踪方法)。我现在没有时间研究这个问题,但听起来很有趣。