不,调试器不会因设置断点而自动打开。
因此,您首先设置一个断点(或多个断点),然后手动启动调试器。
此后,调试器将照常执行您的代码,但在到达断点时将停止执行指令- 断点处的指令本身不会执行。它将暂停它会在它之前,让您有机会执行一些调试任务,如
这是所有编程语言(及其 IDE)的所有调试器的常见场景。
对于 IDE,启动调试器将
如果不设置至少一个断点,大多数调试器会不间断地执行整个程序(就像在没有调试器的情况下启动程序一样),因此您将没有机会执行任何调试任务。
(某些 IDE 可以选择以“第一条指令,然后暂停”模式启动调试器,因此在这种情况下您无需提前设置断点。)
是的breakpoint()内置函数(Python 3.7 中引入)会停止执行您的程序,进入调试模式,您可以使用 Spyder 的调试器下拉菜单。
(它不是Spyders 的调试器,只是它的下拉菜单;使用的调试器仍然是pdb,即默认的P ython D e B。)
breakpoint()内置函数和breakpointhook()函数(来自sys内置模块)之间的连接非常简单 -第一个函数直接调用第二个函数。
自然的问题是为什么我们需要两个具有完全相同行为的函数?
答案就在设计中——breakpoint()可以通过改变函数的行为来间接改变功能。breakpointhook()改变函数。
例如,IDE 创建者可能会更改函数的行为,breakpointhook()以便它将启动他们自己的调试器,而不是pdb自己的调试器。