Odoo.sh Jupyter 上的编辑器:pdb.set_trace 引发 BdbQuit 错误
Odoo.sh Editor on Jupyter : pdb.set_trace raises BdbQuit Error
使用我的 odoo.sh 项目 (v13.0.2) > EDITOR-Tab ,当我想使用 import pdb 进行调试时,它会将我重定向到 mywebsite.odoo.com/odoo-sh/editor/lab; pdb.set_trace(),它会引发 BdbQuit 错误:
File "/usr/lib/python3.6/bdb.py", line 113, in
dispatch_exception
if self.quitting: raise BdbQuit
在过去的版本中:v13.0.1.xxx,我可以使用 pdb.set_trace() 来调试我的 python 代码。如何解决这个问题?
使用这个 post How to debug python CLI that takes stdin?,我是这样管理的:
in Odoo.sh>EDITOR (Jupyter Lab): 打开第一个终端并创建这两个 fifos,它们将用作 stdin/stdout 以使用 pdb :
mkfifo fifo_stdin
mkfifo fifo_stdout
cat fifo_stdout & cat > fifo_stdin
...这使得出现提示光标。保持此终端选项卡打开。
将这两行写在要调试的Python脚本的顶部:
import pdb
mypdb=pdb.Pdb(stdin=open('fifo_stdin','r'), stdout=open('fifo_stdout','w'))
在这个 Python 脚本中,使用 2 fifos
在自定义的 mypdb 上调用 set_trace()
def _get_total_amount(self):
total_amount = sum(self._get_base_order_lines(program).mapped('price_total'))
mypdb.set_trace()
return total_amount
打开第二个终端以启动您的 Odoo 应用程序:
odoo-bin -u sale_coupon --stop-after-init
...等待所有模块加载完毕
切换到第一个终端window (fifo)
在另一个 Webbrowser-tab 中:浏览您的 Odoo 应用程序/网站以触发您放置 set_trace()
的功能
到第一个Terminal输入要观察的函数变量:
total_amount
1480.0
(Pdb)
使用“continue”在您的应用程序进程(下一个断点,如果有的话)中走得更远,并使用“quit”中止调试
(Pdb) continue
(Pdb) quit
使用键盘组合退出 pdb:Ctrl + D
Odoo 可能仍然挂起,这需要在 python 脚本中注释 pdb-lines,关闭终端 windows 并重新启动您的 Odoo-App :
odoo-bin -u sale_coupon --stop-after-init
使用我的 odoo.sh 项目 (v13.0.2) > EDITOR-Tab ,当我想使用 import pdb 进行调试时,它会将我重定向到 mywebsite.odoo.com/odoo-sh/editor/lab; pdb.set_trace(),它会引发 BdbQuit 错误:
File "/usr/lib/python3.6/bdb.py", line 113, in
dispatch_exception
if self.quitting: raise BdbQuit
在过去的版本中:v13.0.1.xxx,我可以使用 pdb.set_trace() 来调试我的 python 代码。如何解决这个问题?
使用这个 post How to debug python CLI that takes stdin?,我是这样管理的:
in Odoo.sh>EDITOR (Jupyter Lab): 打开第一个终端并创建这两个 fifos,它们将用作 stdin/stdout 以使用 pdb :
mkfifo fifo_stdin mkfifo fifo_stdout cat fifo_stdout & cat > fifo_stdin
...这使得出现提示光标。保持此终端选项卡打开。
将这两行写在要调试的Python脚本的顶部:
import pdb mypdb=pdb.Pdb(stdin=open('fifo_stdin','r'), stdout=open('fifo_stdout','w'))
在这个 Python 脚本中,使用 2 fifos
在自定义的 mypdb 上调用 set_trace()def _get_total_amount(self): total_amount = sum(self._get_base_order_lines(program).mapped('price_total')) mypdb.set_trace() return total_amount
打开第二个终端以启动您的 Odoo 应用程序:
odoo-bin -u sale_coupon --stop-after-init
...等待所有模块加载完毕
切换到第一个终端window (fifo)
在另一个 Webbrowser-tab 中:浏览您的 Odoo 应用程序/网站以触发您放置 set_trace()
的功能到第一个Terminal输入要观察的函数变量:
total_amount 1480.0 (Pdb)
使用“continue”在您的应用程序进程(下一个断点,如果有的话)中走得更远,并使用“quit”中止调试
(Pdb) continue (Pdb) quit
使用键盘组合退出 pdb:Ctrl + D
Odoo 可能仍然挂起,这需要在 python 脚本中注释 pdb-lines,关闭终端 windows 并重新启动您的 Odoo-App :
odoo-bin -u sale_coupon --stop-after-init