Python 在pdb.set_trace()之后理解pdb输出

Python 在pdb.set_trace()之后理解pdb输出,python,pdb,Python,Pdb,正在尝试用pdb调试基于python的roguelike。我想弄清楚的是,函数handle_keys()返回0,就像我所问的那样。我有另一个函数的行为不符合预期,因此我试图找出问题发生的地方。应该发生的是:handle_keys()返回0,然后frag_glande()做了一些事情 我插入了pdb的回溯,但我不确定这是否会显示handle_keys()是否返回0: elif key.vk == libtcod.KEY_BACKSPACE: game_state = 'playin

正在尝试用pdb调试基于python的roguelike。我想弄清楚的是,函数handle_keys()返回0,就像我所问的那样。我有另一个函数的行为不符合预期,因此我试图找出问题发生的地方。应该发生的是:handle_keys()返回0,然后frag_glande()做了一些事情

我插入了pdb的回溯,但我不确定这是否会显示handle_keys()是否返回0:

elif key.vk == libtcod.KEY_BACKSPACE:
        game_state = 'playing'
        pdb.set_trace()
        return 0
当我在游戏中点击backspace时,我从pdb获得以下输出:

-->返回0

我不确定这是显示返回值还是只显示下一行代码

多谢各位

从正在运行的程序进入调试器的典型用法是 插入

import pdb; pdb.set_trace()
在您想要进入调试器的位置。然后你就可以走了 通过此语句后面的代码并继续运行 没有使用c命令的调试器

箭头指向将要执行的当前行

返回值的打印方式完全不同:

In [11]: def answer():
    ...:     return 42

In [13]: pdb.runeval("answer()")
> <string>(1)<module>()->None
(Pdb) s
--Call--
> <ipython-input-11-22e067ec9c24>(1)answer()
-> def answer():
(Pdb) n
> <ipython-input-11-22e067ec9c24>(2)answer()
-> return 42
(Pdb)
--Return--
> <ipython-input-11-22e067ec9c24>(2)answer()->42
-> return 42
(Pdb)
[11]中的
:def answer():
…:返回42
在[13]中:pdb.runeval(“answer()”)
>(1)无
(Pdb)s
--召唤--
>(一)答复()
->def answer():
(Pdb)n
>(二)答复()
->返回42
(Pdb)
--返回--
>(2)答案()->42
->返回42
(Pdb)

如您所见,返回行被打印两次——首先在执行之前,然后在函数返回时打印。第二次,它伴随着<代码>——返回-<代码>和位置行中的返回值。

如果答案解决了您的问题,请考虑它。