Python断点()

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

在Python中设置断点(breakpoint())。

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

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

breakpoint()

print(z)

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

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

Python 的断点() – 停止调试

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

$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$
python breakpoint stop debugging

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 scdev:5555...
python web-pdb debugger

总结

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

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

参考:官方文档

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds