Python breakpoint()

Python breakpoint() 是 Python 3.7 中引入的一种新的内置功能。Python 代码调试一直是一个痛苦的过程,因为实际代码和调试模块代码之间的紧密连接。例如,如果你使用的是 pdb debugger,那么你将不得不在你的程序代码中调用 pdb.set_trace()。 如果你想使用任何其他调试器,让我们说 web-pdb,那么你将不得不删除所有与 PDB 相关的代码,并添加 _webpdb.settrace()` 方法。这导致了使用 python 调试器的巨大过剩,使 Python 代码难以调试和维护。这就是为什么 Python 3.7

Python 破解点( )

Python breakpoint() 函数呼叫 sys.breakpointhook() 函数. 默认情况下, sys.breakpointhook() 呼叫 pdb.set_trace() 函数. 因此,至少使用 breakpoint() 提供了使用调试器的便利性,因为我们不必明确导入 pdb 模块。 让我们来看看一个简单的例子: breakpoint() 函数的使用。 我们有一个 Python 脚本 `python_breakpoint_examples.py' 用下面的代码。

1x = 10
2y = 'Hi'
3z = 'Hello'
4print(y)
5
6breakpoint()
7
8print(z)

当我们执行此脚本时,PDB调试控制台将打开。

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

python breakpoint example

Python breakpoint() - 停止调试

Python sys.breakpointhook() 函数使用环境变量 PYTHONBREAKPOINT 来配置调试器. 如果不设置,则使用默认 PDB 调试器. 如果设置为0,则函数会立即返回,并且没有执行代码调试。

1$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
2Hi
3Hello
4$

python breakpoint stop debugging

Python breakpoint() - 更改调试模块

我们可以使用 PYTHONBREAKPOINT 环境变量来提供调试方法,用 breakpoint() 函数来调用。这是非常有用的,因为我们可以轻松更改调试模块,而不会对代码进行任何更改。假设我们想要使用 web-pdb 调试器。我们可以轻松地将其连接到我们的程序中,使用 PYTHONBREAKPOINT=web_pdb.set_trace。首先,确保 web-pdb 已安装。

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

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

python breakpoint change debugger Open the web-server URL provided in the console log and you will see the debugger window like the below image. python web-pdb debugger We can issue PDB commands using this UI, you can send command "c" to continue and complete our program.

摘要

Python breakpoint() 函数是对 python 调试功能的非常有用的补充,建议使用此功能进行调试,以便您可以轻松连接其他第三方调试器。

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

参考: 官方文件

Published At
Categories with 技术
Tagged with
comments powered by Disqus