Python breakpoint() 是 Python 3.7 中引入的新内置函数。由于实际代码和调试模块代码之间的紧密耦合,Python 代码调试一直是一个痛苦的过程。例如,如果您正在使用pdb 调试器,那么您将不得不在程序代码中调用pdb.set_trace()。如果您想使用任何其他调试器,例如web-pdb,那么您必须删除所有与 PDB 相关的代码并添加web_pdb.set_trace()方法。这会导致使用 python 调试器的巨大开销,并使 python 代码难以调试和维护。这就是为什么 Python 3.7 引入了breakpoint()方法,允许我们编写松散耦合的调试代码。

Python断点()

Python breakpoint() 函数调用sys.breakpointhook()函数。默认情况下,sys.breakpointhook() 调用pdb.set_trace()函数。因此,至少,使用 breakpoint() 为使用调试器提供了便利,因为我们不必显式导入pdb模块。让我们看一个简单的 breakpoint() 函数使用示例。我们有一个带有以下代码的python脚本python_breakpoint_examples.py

x = 10
y = 'Hi'
z = 'Hello'
print(y)

breakpoint()

print(z)

当我们执行这个脚本时,PDB 调试器控制台就会打开。

$python3.7 python_breakpoint_examples.py
Hi
> /Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/python_breakpoint_examples.py(8)()
-> print(z)
(Pdb) c
Hello
$

python断点示例

Python breakpoint() - 停止调试

Python sys.breakpointhook() 函数使用环境变量 PYTHONBREAKPOINT 来配置调试器。如果未设置,则使用默认的 PDB 调试器。如果设置为“0”,则该函数立即返回并且不执行代码调试。当我们想在不调试的情况下运行代码时,这非常有用。

$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$

python断点停止调试

Python breakpoint() - 更改调试器模块

我们可以使用 PYTHONBREAKPOINT 环境变量来提供由 breakpoint() 函数调用的调试器方法。这非常有用,因为我们可以轻松更改调试器模块,而无需更改任何代码。假设我们要使用web-pdb调试器。我们可以使用PYTHONBREAKPOINT=web_pdb.set_trace轻松地将其挂接到我们的程序中。首先,确保已安装 web-pdb。您可以使用pip3.7 install web-pdb命令安装它。

根据web-pdb 文档,它与 Python 3.7 中添加的新 breakpoint() 函数兼容。

$PYTHONBREAKPOINT=web_pdb.set_trace python3.7 python_breakpoint_examples.py
Hi
2018-08-10 12:49:54,339: root - web_console:110 - CRITICAL - Web-PDB: starting web-server on pankaj:5555...

python 断点更改调试器打开控制台日志中提供的 Web 服务器 URL,您将看到如下图所示的调试器窗口。 python web-pdb debugger我们可以使用这个UI发出PDB命令,你可以发送命令“c”继续并完成我们的程序。

总结

Python breakpoint() 函数是对 Python 调试功能的一个非常有用的补充。建议使用它进行调试,以便您可以轻松地即时挂钩其他第三方调试器。它还提供了一个简单的选项来禁用调试器并正常运行程序。

您可以从我们的GitHub 存储库中查看更多 Python 示例。

参考:官方文档

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐