Python 使用FIFO在没有标准输入/标准输出的情况下运行pdb
我正在用python开发FUSE文件系统。问题是,在安装文件系统之后,我无法从fuse脚本访问stdin/stdout/stderr。我什么都没看到,甚至连追踪都没有。我正试图像这样启动pdb:Python 使用FIFO在没有标准输入/标准输出的情况下运行pdb,python,bash,pdb,Python,Bash,Pdb,我正在用python开发FUSE文件系统。问题是,在安装文件系统之后,我无法从fuse脚本访问stdin/stdout/stderr。我什么都没看到,甚至连追踪都没有。我正试图像这样启动pdb: import pdb pdb.Pdb(None, open('pdb.in', 'r'), open('pdb.out', 'w')).set_trace() 一切都很好,但很不方便。我想将pdb.in和pdb.out作为fifo文件,但不知道如何正确连接。理想情况下,我希望在一个终端中键入命令并查
import pdb
pdb.Pdb(None, open('pdb.in', 'r'), open('pdb.out', 'w')).set_trace()
一切都很好,但很不方便。我想将pdb.in和pdb.out作为fifo文件,但不知道如何正确连接。理想情况下,我希望在一个终端中键入命令并查看输出,但即使有两个终端(在一个终端中输入命令并在另一个终端中查看输出),我也会很满意。问题:
1) 在没有stdin/stdout的情况下运行pdb是否更好
2) 如何将stdin重定向到pdb.in fifo(我键入的所有内容都必须转到pdb.in)?如何将pdb.out重定向到stdout(我在“cat pdb.out”中出现了奇怪的错误,但可能我不明白什么)好的。这正是我想要的,已经完成了 好的。这正是我想要的,已经完成了 在启动python应用程序之前
mkfifo pdb.in
mkfifo pdb.out
然后,当调用pdb时,您可以使用这两个cat命令与之交互,其中一个在后台运行
cat pdb.out & cat > pdb.in
注意:在启动python应用程序之前,readline支持不起作用(即向上箭头)
mkfifo pdb.in
mkfifo pdb.out
然后,当调用pdb时,您可以使用这两个cat命令与之交互,其中一个在后台运行
cat pdb.out & cat > pdb.in
注意,readline支持不起作用(即向上箭头)我只是在一个简单得多的用例中遇到了类似的问题:
- 调试一个从命令行运行的简单Python程序,该程序将一个文件传输到
,这意味着无法使用sys.stdin
的控制台pdb
pip install wdb.server wdb
现在使用以下命令启动wdb服务器:
wdb.server.py
现在,您可以使用浏览器导航到localhost:1984,并看到一个列出所有正在运行的Python程序的界面。上面的wdb项目页面有一些说明,说明了如果要调试这些正在运行的程序,可以执行哪些操作
对于您控制下的程序,您可以从一开始就使用以下工具进行调试:
wdb myscript.py --script=args < and/stdin/redirection
这将在浏览器中弹出一个界面(如果是本地的),显示跟踪的程序
或者,您可以导航到wdb.server.py端口,查看运行Python程序列表顶部的所有正在进行的调试会话,然后可以使用这些程序访问所需的特定调试会话
请注意,跟踪期间用于导航代码的命令与标准的
pdb
命令不同,例如,要单步进入使用.s
而不是s
的函数,以及要单步使用.n
而不是n
。有关详细信息,请参阅上面链接中的wdb
自述文件。我刚刚在一个更简单的用例中遇到了类似的问题:
- 调试一个从命令行运行的简单Python程序,该程序将一个文件传输到
,这意味着无法使用sys.stdin
的控制台pdb
pip install wdb.server wdb
现在使用以下命令启动wdb服务器:
wdb.server.py
现在,您可以使用浏览器导航到localhost:1984,并看到一个列出所有正在运行的Python程序的界面。上面的wdb项目页面有一些说明,说明了如果要调试这些正在运行的程序,可以执行哪些操作
对于您控制下的程序,您可以从一开始就使用以下工具进行调试:
wdb myscript.py --script=args < and/stdin/redirection
这将在浏览器中弹出一个界面(如果是本地的),显示跟踪的程序
或者,您可以导航到wdb.server.py端口,查看运行Python程序列表顶部的所有正在进行的调试会话,然后可以使用这些程序访问所需的特定调试会话
请注意,跟踪期间用于导航代码的命令与标准的pdb
命令不同,例如,要单步进入使用.s
而不是s
的函数,以及要单步使用.n
而不是n
。有关详细信息,请参阅上面链接中的wdb
自述