我厌倦了插入

import pdb; pdb.set_trace()

线进入我的蟒蛇的程序和调试通过控制台。我怎么连接,远程调试器,并插入断点从一个文明用户接口?

有帮助吗?

解决方案

使用 Winpdb.这是一个 独立的平台 图形GPL Python调试器,支持远程调试过网络、多线程,名字空间修改、嵌入调试、加密的通信和高达20倍的速度比pdb。

特点:

  • GPL许可证。Winpdb是免费的软件。
  • 兼容CPython2.3通过2.6和Python3000
  • 兼容wxPython2.6通过2.8
  • 平台的独立和测试对Ubuntu勇敢和Windows XP。
  • 用户接口:rpdb2是控制台的基础,同时winpdb需要wxPython2.6或以后。

Screenshot
(资料来源: winpdb.org)

其他提示

那么,你可以使用一个扭曲的沙井,得到相当类似于一些东西, 是这样的:

from twisted.internet import reactor
from twisted.cred import portal, checkers 
from twisted.conch import manhole, manhole_ssh 

def getManholeFactory(namespace):
    realm = manhole_ssh.TerminalRealm()
    def getManhole(_): 
        return manhole.Manhole(namespace) 
    realm.chainedProtocolFactory.protocolFactory = getManhole
    p = portal.Portal(realm)
    p.registerChecker(
        checkers.InMemoryUsernamePassword DatabaseDontUse(admin='foobar'))
    f = manhole_ssh.ConchFactory(p)
    return f

reactor.listenTCP(2222, getManholeFactory(globals()))
reactor.run() 

然后你只需登录到程序通过ssh;

$ ssh admin@localhost -p 2222
admin@localhost's password: 

使用的 foobar的作为口令。

当你登录,你会得到一个正常的Python提示,你可以只戳在数据。 这不是完全一样越来越派人过来主机的回溯。

现在,这可能会非常棘手集成到一个GUI程序,在这种情况下,你可能需要选择其他反应器,例如用于基于GTK程序使用的gtk2reactor等。

如果你想实际回溯送过来,你需要创建两个标准错误,stdin和stdout肚里在网络上,而不是打印到本地主机套接字通道。不应太硬,通过使用扭曲来完成。

有点晚了,但这是一个非常轻型远调试解决方案的礼貌 http://michaeldehaan.net/post/35403909347/tips-on-using-debuggers-with-ansible:

  1. pip install epdb 在遥远的主人。
  2. 请确保您的防火墙设置不允许非本地连接到口8080遥主,因为 epdb 默认为倾听在任何地址(INADDR_ANY),不127.0.0.1.
  3. 而不是使用 import pdb; pdb.set_trace() 在您的节目时,使用 import epdb; epdb.serve().
  4. 安全地登录到远程主,因为 epdb.connect() 使用telnet。
  5. 附加的节目使用 python -c 'import epdb; epdb.connect()'.

调整安全位,以满足当地网络的设置和安全的立场,当然。

两个解决方案,从现代的IDEs:

  1. 更多更好的跨平台的远程试

  2. PyCharm/PyDev远程调试

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top