问题描述
我正在运行一个交互式 ssh python 程序,但我并不总是在技术上与之交互(管道 stdout 和 stdin)。我需要打印一个字符串来通知我本地机器上的 pexpect 断点已被调用并进入交互模式。
在我的本地机器上:
p: pexpect.spawn
i = p.expect([pexpect.EOF,'__INteraCT__'])
if i==1:
p.interact()
我这样做的原因是我不能在它运行的整个过程中简单地interact()
。这会干扰本地进程的标准输出。
所以在远程进程上,我用
断点print('__INteraCT__')
breakpoint()
这可行,但是我想要单行断点。所以我尝试了:
def remote_breakpoint():
print('__INteraCT__')
import pdb; pdb.set_trace()
sys.breakpointhook = remote_breakpoint
这允许我只写 breakpoint()
。它还允许我在本地运行时禁用额外的打印语句:
def remote_breakpoint():
if platform.system() != 'Darwin':
print('__INteraCT__')
import pdb; pdb.set_trace()
它有效,但现在 pdb 在 remote_breakpoint
函数内部启动,我每次都必须点击 r
才能退出。我如何告诉 pdb.set_trace
启动堆栈上的一个函数,或者让它等待启动交互过程直到 remote_breakpoint
返回?
即使我只是调用 remote_breakpoint()
(而不是使用 sys.breakpointhook),我仍然有同样的问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)