了解pdb.set_trace()之后的pdb输出

时间:2018-06-14 17:27:25

标签: python pdb

尝试用pdb调试我的基于python的roguelike。我想弄清楚的是,函数handle_keys()返回0就像我在问。我有另一个功能不符合预期,所以我试图找出问题发生的位置。应该发生的是:handle_keys()返回0,然后frag_grenade()执行某些操作。

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

elif key.vk == libtcod.KEY_BACKSPACE:
        game_state = 'playing'
        pdb.set_trace()
        return 0

当我在游戏中点击退格键时,我从pdb获得此输出:

  

- >返回0

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

非常感谢!

1 个答案:

答案 0 :(得分:1)

26.2. pdb — The Python Debugger — Python 2.7.15 documentation

  

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

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)
     

在您想要进入调试器的位置。然后你可以步骤   通过代码跟随此声明,并继续运行   没有调试器使用c命令。

箭头指向即将执行的当前行。

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

--Return--

正如您所看到的,返回的行被打印两次 - 首先在执行之前,然后在函数返回时。第二次,它伴随着isA()和位置行中返回的值。