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_跟踪方法)。我现在没有时间研究这个问题,但听起来很有趣。