python - 了解 pdb.set_trace() 之后的 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
我不确定这是显示返回值还是仅显示下一行代码....
非常感谢!
解决方案
26.2. pdb — Python 调试器 — Python 2.7.15 文档:
从正在运行的程序闯入调试器的典型用法是插入
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)
如您所见,返回的行被打印了两次——第一次是在执行之前,然后是函数返回时。第二次,--Return--
在定位行中伴随着 和 的返回值。
推荐阅读
- magento - 每次我尝试启用或禁用任何模块时,Magento 2 都会崩溃
- rust - 在 build.rs 中获取 --bin 参数
- c++ - 使用 do while 循环从头开始
- random - 随机三元组数发生器
- excel - 使用 Power BI 根据其他列中的特定条件创建特定列(标题和标题中的数据)
- c++ - 专门化哪个函数重载的规则
- python - 如何在 Python 中只计算 10% 的矩阵特征值?
- python - 用类模拟产量
- python - Pandas 日期范围查询给出“TypeError:'Series' 对象是可变的,因此它们不能被散列”
- sas - 如何将值从 SAS 中另一个变量的值分配给新变量