KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 543|回复: 1

Remote Debugging In Python - Using PDB

[复制链接]

8

主题

3374

帖子

7586

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7586
QQ
发表于 2017-6-30 15:18:30 | 显示全部楼层 |阅读模式
  1. #!/usr/bin/env python
  2. import pdb
  3. import socket
  4. import sys

  5. class Rdb(pdb.Pdb):
  6.   def __init__(self, port=4444):
  7.     self.old_stdout = sys.stdout
  8.     self.old_stdin = sys.stdin
  9.     self.skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  10.     self.skt.bind(("127.0.0.1", port))
  11.     self.skt.listen(1)
  12.     print (port)
  13.     (clientsocket, address) = self.skt.accept()
  14.     print (1111)
  15.     handle = clientsocket.makefile('rw')
  16.     pdb.Pdb.__init__(self, completekey='tab', stdin=handle, stdout=handle)
  17.     sys.stdout = sys.stdin = handle
  18.    
  19.   def do_continue(self, arg):
  20.     sys.stdout = self.old_stdout
  21.     sys.stdin = self.old_stdin
  22.     self.skt.close()
  23.     self.set_continue()
  24.     return 1
  25.    
  26.   do_c = do_cont = do_continue
  27.   
  28. # Example usage - connect with 'telnet 4444'

  29. if __name__=='__main__':
  30.   def buggy_method():
  31.     x = 3
  32.     remote_debug = Rdb()
  33.     remote_debug.set_trace()
  34.     print (x)
  35.   buggy_method()
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
柯标
3603661@qq.com
回复

使用道具 举报

8

主题

3374

帖子

7586

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7586
QQ
 楼主| 发表于 2017-6-30 15:19:35 | 显示全部楼层
Sometimes you need to debug a code inside a thread or running in background.

rpdb is a wrapper around pdb using a tcp socket to communicate with the outside world.

pip install rpdb
In your code:

import rpdb; rpdb.Rpdb().set_trace()
Then connect through telnet to debug your code!

telnet localhost 4444
柯标
3603661@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2018-12-10 18:58 , Processed in 0.029014 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表