题
我厌倦了插入
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或以后。
(资料来源: 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:
pip install epdb
在遥远的主人。- 请确保您的防火墙设置不允许非本地连接到口8080遥主,因为
epdb
默认为倾听在任何地址(INADDR_ANY
),不127.0.0.1. - 而不是使用
import pdb; pdb.set_trace()
在您的节目时,使用import epdb; epdb.serve()
. - 安全地登录到远程主,因为
epdb.connect()
使用telnet。 - 附加的节目使用
python -c 'import epdb; epdb.connect()'
.
调整安全位,以满足当地网络的设置和安全的立场,当然。
两个解决方案,从现代的IDEs:
更多更好的跨平台的远程试
PyCharm/PyDev远程调试
不隶属于 StackOverflow