【发布时间】:2018-06-28 16:09:01
【问题描述】:
我正在嵌入式 Linux 板上调试 python 守护程序。
我ssh 到我运行程序的板上并输入
调试器。鉴于这是一个守护进程,我正在使用来自 celery 的 rdb
#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 模块有关,但在这种特殊情况下,该模块存在并且可以导入。
【问题讨论】:
-
@DaviLima,我相信你应该使用这个stackoverflow.com/a/9809574/2830850
-
@TarunLalwani,谢谢,这听起来不错,但不幸的是它在 Docker 容器中不起作用:
rlwrap: error: My terminal reports width=0 (is it emacs?) I can't handle this, sorry! -
@DaviLima,在运行
rlwrap命令之前,您能否在终端中运行stty rows 50 && stty cols 150,看看是否有帮助 -
@TarunLalwani,谢谢,用箭头解决了!最后,标签仍然丢失。现在当我按下它时没有任何输出,但它也不会自动完成。您还有其他提示吗?
-
看起来可以启用 TAB,但比人们喜欢的要复杂得多。 rlwrap 的作者@HansLub 的回答:stackoverflow.com/a/9219349/462849 另外,我找不到 Python/pdb/pdbpp/rdb 示例。如果有人知道,那将非常受欢迎,也许我们甚至可以使用 stty+rlwrap+nc 命令重新打包它作为一步解决方案...