远程普通PDB(通过TCP套接字)*正确完成*:无附加功能,正确处理连接失败和CI。基于“pdbx<https://pypi.python.org/pypi/pdbx>`。

remote-pdb的Python项目详细描述


远程普通pdb(通过tcp套接字)done right:没有额外功能,正确处理连接失败和ci。基于 在pdbx上。

  • 自由软件:BSD 2条款许可证

安装

pip install remote-pdb

用法

要在第一个可用端口上打开远程PDB,请执行以下操作:

fromremote_pdbimportset_traceset_trace()# you'll see the port number in the logs

使用特定的主机/端口:

fromremote_pdbimportRemotePdbRemotePdb('127.0.0.1',4444).set_trace()

要连接,只需运行telnet 127.0.0.1 4444。当你完成的时候 调试,要么退出调试器,要么按下控制-],然后控制-d/<

或者,可以连接netcat:nc -C 127.0.0.1 4444或socat:socat readline tcp:127.0.0.1:4444(用于行编辑和历史记录支持)。完成调试时,退出 调试器,或按control-c。

与Python3.7+中的breakpoint()集成

如果您使用的是python 3.7,那么可以使用内置的新breakpoint()来调用 远程PDB。在这种情况下,必须设置以下环境变量:

PYTHONBREAKPOINT=remote_pdb.set_trace

调试器可以如下调用,无需任何导入:

breakpoint()

由于breakpoint()函数不接受任何参数,因此可以使用环境变量 指定服务器应侦听的主机和端口。例如,在这样的 要使telnet 127.0.0.1 4444成为正确的连接方式,可以运行:

PYTHONBREAKPOINT=remote_pdb.set_trace REMOTE_PDB_HOST=127.0.0.1 REMOTE_PDB_PORT=4444 python script.py

如果省略REMOTE_PDB_HOST,则将使用默认值127.0.0.1。如果REMOTE_PDB_PORT是 如果省略,则将使用第一个可用端口。连接信息将记录到控制台, 就像调用remote_pdb.set_trace()一样。

若要使输出静音,请设置REMOTE_PDB_QUIET=1,这将阻止 RemotePdb生成任何输出–您可能需要指定 REMOTE_PDB_PORT因为随机端口不会被打印。

有关OS X的说明

在某些情况下(后台进程),os x会阻止readline被导入(readline是pdb的依赖项)。 解决方法(提前运行):

importsignalsignal.signal(signal.SIGTTOU,signal.SIG_IGN)

#9cpython#14892

要求

支持python 2.6、2.7、3.2、3.3和pypy。

类似项目

更改日志

2.0.0(2019-07-31)

  • 修正了退出时将引发与正常使用pdb-bdbquit不一致的问题。 安东尼·索蒂尔在#18中的贡献。 向后不兼容
  • 已将REMOTE_PDB_QUIET=1添加到静默输出。 安东尼·索蒂尔在#19中的贡献。

1.3.0(2019-03-13)

  • 对python 3.7的breakpoint()的文档支持。
  • 添加了通过REMOTE_PDB_HOST/^{tt9}设置套接字侦听主机/端口的支持$ 环境变量。马修·威尔克斯在#14中的贡献。
  • 去掉了在套接字周围使用rw文件包装器(原来套接字的makefile在python 3.6和 稍后-output is discarded)。贡献于#13

1.2.0(2015-09-26)

  • 始终打印/记录侦听地址。

1.1.3(2015-07-06)

  • 更正了默认帧跟踪起始位置。

1.1.2(2015-07-06)

  • 小型自述文件更新。

1.1.1(2015-07-06)

  • 删除伪造的remote_pdb控制台脚本。

1.1.0(2015-06-21)

  • 修复了在python 3和windows上运行时的缓冲问题。

1.0.0(2015-06-15)

  • 增加了对pdb++的支持。

0.2.1(2014-03-07)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何重用DatagramSocket?   java Struts可视化调试   jGrasp和MinGW的java错误无法编译代码0xc000007b   JSP中的java上载文件如何更改上载文件的默认路径   eclipse maven将参数传递给pom java。图书馆路径cplex   java用于循环检查数组中的数字是否向上或向下移动   java使用Jackson解析GSA XML列表   如何在Java中汇总ArrayList中具有相同属性的所有元素?   计时器Java使用任务本身的数据终止计时器任务   java IBM Rapid Application Developer 8.5.1滚动条不可拖动(Enterprise Explorer\Package Explorer)+CtrlF on JSP有时不工作   java我可以要求Intellij为整个产品线应用意图操作吗?   如何在Java中从时间字符串中提取秒数?   java如何在组件表示存储扩展中获取组件对象   java断路器(弹性4J)在Spring Boot应用程序中不工作   Java检查用户从控制台给出的数字是否在文本文件中   JavaSelenium、Firefox和geckodriver不会自动滚动单击方法   java是否可以在MR作业之外将数据写入HDFS,并仍然使用配置单元进行查询?   JavaIDEA在JAR中创建空的命名文件夹   java如何使用字符串按字母顺序对用户输入的字符串名称进行排序。等于和字符串。比较函数