pdb交互模式通过telnet和rdb

时间:2018-01-19 12:05:41

标签: python debugging telnet

我在嵌入式Linux主板上调试python守护程序。 我ssh到我运行该程序的主板上并输入 调试器。鉴于这是一个deamon流程,我使用rdb中的celery

#Install on the system
pip3 install celery

# Set in the code
from celery.contrib import rdb
rdb.set_trace()

# Connect to the debugger
telnet localhost 5899

但是,在该会话中,tab键不会导致自动完成,通常在pdb中,up键不会滚动浏览历史记录但会打印^[[A

这些问题与缺少的readline python模块有关,但在这种特殊情况下,模块存在并可以导入。

2 个答案:

答案 0 :(得分:3)

我不确定问题是什么,可能与telnet有关。 解决方法是使用另一个似乎有效的远程调试器:

#Install on the system
pip3 install epdb

# Set in the code
import epdb; epdb.serve()

# Connect to the debugger
python3 -c 'import epdb; epdb.connect()'

鉴于这只是一种解决方法,我们不接受它作为答案。

答案 1 :(得分:2)

所以你可能的选择是

<强> rlwrap

rlwrap telnet host port

如果你有col和行问题在

下面运行
stty rows 50 && stty cols 150

<强> socat

socat readline tcp:127.0.0.1:6900

这将添加readline和历史记录支持,而不需要像rlwrap

那样的任何其他内容

我还没有找到一种方法来启用Telnet并完成制表符。有一些有趣的SO线程谈论将telnet客户端放在nolinemodecharactermode

Force telnet client into character mode

我尝试更新Rdb代码来实现,但所有尝试都失败了

PS:致https://stackoverflow.com/a/9809574/2830850https://stackoverflow.com/a/9219349/462849

的积分