使用断点方法

H. *_*han 5 python methods built-in python-3.x

我是python的新手,不确定断点方法是如何工作的.它是否为IDE或某些内置调试器打开调试器?

另外,我想知道该调试器是如何运行的.

例如,我使用Spyder,这是否意味着如果我使用breakpoint()方法,Spyder的调试器将打开,我可以通过它调试器下拉菜单,或者打开一些其他调试器?

我还想知道这个函数如何与breakpointhook()方法一起使用.

Mar*_*anD 4

不,调试器不会因设置断点而自动打开。

因此,您首先设置一个断点(或多个断点),然后手动启动调试器

此后,调试器将照常执行您的代码,但在到达断点时将停止执行指令- 断点处的指令本身不会执行。它将暂停它会在它之前,让您有机会执行一些调试任务,如

  • 检查变量值,
  • 手动设置变量为其他值
  • 继续逐步执行指令(执行下一条指令),
  • 继续执行指令到下一个断点
  • 过早地停止调试你的程序。

这是所有编程语言(及其 IDE)的所有调试器的常见场景。

对于 IDE,启动调试器将

  • 在菜单系统中启用或显示调试指令,
  • 为他们显示一个工具栏并将,
  • 为它们启用热键。

如果不设置至少一个断点,大多数调试器会不间断地执行整个程序(就像在没有调试器的情况下启动程序一样),因此您将没有机会执行任何调试任务。

(某些 IDE 可以选择以“第一条指令,然后暂停”模式启动调试器,因此在这种情况下您无需提前设置断点。)


是的breakpoint()内置函数(Python 3.7 中引入)会停止执行您的程序,进入调试模式,您可以使用 Spyder 的调试器下拉菜单。

(它不是Spyders 的调试器,只是它的下拉菜单;使用的调试器仍然是pdb,即默认的P ython D e B。)

breakpoint()内置函数和breakpointhook()函数(来自sys内置模块)之间的连接非常简单 -第一个函数直接调用第二个函数。

自然的问题是为什么我们需要两个具有完全相同行为的函数?

答案就在设计中——breakpoint()可以通过改变函数的行为来间接改变功能。breakpointhook()改变函数。

例如,IDE 创建者可能会更改函数的行为,breakpointhook()以便它将启动他们自己的调试器,而不是pdb自己的调试器。