我在嵌入式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模块有关,但在这种特殊情况下,模块存在并可以导入。
答案 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客户端放在nolinemode
或charactermode
Force telnet client into character mode
我尝试更新Rdb代码来实现,但所有尝试都失败了
PS:致https://stackoverflow.com/a/9809574/2830850和https://stackoverflow.com/a/9219349/462849
的积分