【问题标题】:pdb interactive mode throught telnet and rdbpdb 交互模式通过 telnet 和 rdb
【发布时间】:2018-06-28 16:09:01
【问题描述】:

我正在嵌入式 Linux 板上调试 python 守护程序。 我ssh 到我运行程序的板上并输入 调试器。鉴于这是一个守护进程,我正在使用来自 celeryrdb

#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 命令重新打包它作为一步解决方案...

标签: python debugging telnet


【解决方案1】:

我不确定问题是什么,可能与 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()'

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

【讨论】:

  • 您好,感谢您的回答!我与调试器的连接在 60 秒后关闭,说 (Epdb) *** Connection closed by remote host ***。扩展连接的任何提示?
  • 好的,对于任何有连接超时的人,可以通过在您的 celery 命令中添加--soft-time-limit 9999999 来解决。
【解决方案2】:

所以你可能的选择是

rlwrap

rlwrap telnet host port

如果您在下面运行 col 和 rows 问题

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

【讨论】:

  • 你需要在 docker 容器中安装 readline 库
猜你喜欢
  • 2018-05-11
  • 2019-02-15
  • 2012-10-31
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 2021-09-23
  • 2020-08-17
相关资源
最近更新 更多