尝试用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
我不确定这是显示返回值还是仅显示下一行代码....
非常感谢!
答案 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()
和位置行中返回的值。