打破Python调试器中的成员函数

Cod*_*key 6 python debugging

这应该是一个微不足道的问题,但到目前为止我的搜索没有结果:

我第一次使用Python调试器(pdb),并且非常高兴地发现使用gdb时熟悉的大多数命令.

但是,当我在类JamParserparse()成员中使用以下语句设置断点时:

(Pdb) b JamParser.parse
*** The specified object 'JamParser.parse' is not a function
or was not found along sys.path.
Run Code Online (Sandbox Code Playgroud)

我尝试了几种变体,包括:

(Pdb) b jam2dot.py:JamParser.parse
Run Code Online (Sandbox Code Playgroud)

我假设因为我从命令行调用了调试器,它知道文件中的实体.这是一个错误的假设吗?

文件说,休息可以采取一个函数作为参数,但不提供任何语法帮助.那么如何按名称为成员函数设置断点呢?

Gar*_*ees 18

您需要先导入名称,然后才能在调试器中引用它们.

(Pdb) from jam2dot import JamParser
(Pdb) b JamParser.parse
Run Code Online (Sandbox Code Playgroud)

  • 哇。多么可怕的、误导性的错误消息。如果一个程序“找不到”某些东西,它应该这样说,而不是暗示它找到了它,但它不是正确的东西。 (2认同)
  • 这可能是一篇相当老的文章,但为什么 pdb 模块不会自动导入实际正在调试的文件的成员? (2认同)