在 django 网站上互动 Shell
Interactive Shell on website in django
我有一个 Django 项目 运行。我想提供一个用户通过 Web 应用程序以交互方式使用 JDB 来调试应用程序。我希望用户可以发出诸如
之类的命令
stop in [function name]
next
并且他会得到回复然后可以继续。
然而,当我使用 os.system 时,就像这样:
def AttachDebugger(pid):
# enable port forwarding
adb = ADB()
adb.set_adb_path('~/Library/Android/sdk/platform-tools/adb')
adb.forward_socket('tcp:8001', 'jdwp:' + pid)
# attaching
os.system('jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8001')
然后它在后台打开一个 JDB 会话,但它在那里冻结并且不 return 控制 python 代码,除非通过 CTRL+C 停止它。有什么办法可以提供这样的互动环节吗?
我想要的与此处的 GITHUB-教程页面类似:
https://try.github.io/levels/1/challenges/1
用户可以与 JDB 实例交互的地方
提前致谢。
我用 pexpect 模块搞定了。
我有一个 Django 项目 运行。我想提供一个用户通过 Web 应用程序以交互方式使用 JDB 来调试应用程序。我希望用户可以发出诸如
之类的命令stop in [function name]
next
并且他会得到回复然后可以继续。
然而,当我使用 os.system 时,就像这样:
def AttachDebugger(pid):
# enable port forwarding
adb = ADB()
adb.set_adb_path('~/Library/Android/sdk/platform-tools/adb')
adb.forward_socket('tcp:8001', 'jdwp:' + pid)
# attaching
os.system('jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8001')
然后它在后台打开一个 JDB 会话,但它在那里冻结并且不 return 控制 python 代码,除非通过 CTRL+C 停止它。有什么办法可以提供这样的互动环节吗?
我想要的与此处的 GITHUB-教程页面类似: https://try.github.io/levels/1/challenges/1 用户可以与 JDB 实例交互的地方
提前致谢。
我用 pexpect 模块搞定了。