pydev 调试器用作 python 模块

pydev debugger usage as a python module

pydev debuggerpython 调试器 ,被 pydevpycharm 使用。好像比pdb厉害多了。它的代码可用(https://github.com/fabioz/PyDev.Debugger),并且很容易通过 pip 安装。包名称是 pydevd.

但是,python 代码(在 pydev 或 pycharm IDE 之外)没有关于如何使用它的信息。完全没有文档。

有人知道怎么用吗?我想做这样的事情:

import pydevd

pdd = pydevd.debug("python myscript.py")

pdd.set_break_point(file="myscript.py", lineno=12)
pdd.start()
pdd.read_variable("a")
pdd.continue()

好吧,我同意缺少文档,但主要的想法是您可以在 IDE 中使用它,而不是以编程方式使用它。

您应该以编程方式使用的唯一 public API 是 pydevd.settrace(),它是 API,它将在以编程方式放置的位置设置断点(意味着调试器将在该行停止——具有 pdb.set_trace() 的相同效果——并且相同的 API 也将连接到前端以进行远程调试,如果它仍未连接(即:http://www.pydev.org/manual_adv_remote_debugger.html -- code: https://github.com/fabioz/PyDev.Debugger/blob/a4a58179dab9f9fb93559066f0ef22ac59c59e04/pydevd.py#L1065) .

现在,目前仅有的前端是 PyDev 和 PyCharm,没有为您提供命令行的前端...整个通信是通过套接字连接到调试器后端中的线程(同样,没有真正的文档,但是关于套接字接受的代码应该很容易阅读并且协议非常简单:https://github.com/fabioz/PyDev.Debugger/blob/a4a58179dab9f9fb93559066f0ef22ac59c59e04/_pydevd_bundle/pydevd_process_net_command.py)。

纯 python 代码中有单元测试可以执行此操作(即:连接到调试器,并通过套接字发出命令 -- https://github.com/fabioz/PyDev.Debugger/blob/a4a58179dab9f9fb93559066f0ef22ac59c59e04/tests_python/debugger_unittest.py),因此,它不应该很难真正为它做一个命令行前端——只是直到现在还没有人对它感兴趣,但如果有人想为 PyDev.Debugger 贡献一个命令行前端,那就是欢迎 ;)