我已经在python3项目中广泛使用了PDB,但是我注意到自动完成通常无法如我所期望的那样在调试函数内部时通过< strong> ipython 。
在大多数情况下,我键入一些变量后接一个句点,我希望pdb能够自动完成有关我可以调用的方法的建议。默认情况下,似乎PDB不会使用我插入的任何类型提示来建议自动填充。
我认为这是因为类型注释实际上是在运行时删除的,因此PDB无法访问该信息。
我的问题:有什么内置的方法可以使PDB使用python3类型注释作为提出自动完成建议的方法?
例如,给定一些类:
class MyClass:
def __init__(self):
...
def get_property():
...
和一些功能:
# test.py
def debug_this(test: MyClass):
# set breakpoint here
如果我在debug_this
内设置一个断点,并尝试在PDB内使用制表符完整的test
,那么我会期望以下内容:
$ ipython -m pdb test.py
(Pdb)> break 4
(Pdb)> continue
(Pdb)> test. # then press tab
test.get_property(
但是我没有找到匹配项。
(我相信可以为.pdbrc编写一个自定义的完整函数,但我只是想知道是否有什么方法可以避免这种头痛。)
编辑:我应该注意,自动完成功能适用于未在函数范围内声明的全局变量,因为pdb可以确定这些变量的类型。我只想看看是否可以强制PDB假设我的类型注释正确,并使用该假设建议相应的自动完成。