如何正确调试OpenERP / Odoo?

时间:2015-04-05 05:44:56

标签: debugging logging openerp odoo-8 openerp-8

我在Odoo开发期间在我的python函数中使用pdb.set_trace()作为断点,并且我不断收到日志消息。

 pdb.set_trace()
    -> if s['confirm_state'] in ['draft','confirmed']:

(Pdb) 2015-04-05 05:40:12,794 9981 INFO vvm_odoo_new werkzeug: 127.0.0.1 - - [05/Apr/2015 05:40:12] "POST /longpolling/poll HTTP/1.1" 200 -
2015-04-05 05:40:47,769 9981 INFO vvm_odoo_new werkzeug: 127.0.0.1 - - [05/Apr/2015 05:40:47] "POST /longpolling/poll HTTP/1.1" 200 -

我首先想到的是,这是因为即时通讯功能,所以我取消了它。但我仍然不断收到这条消息。

这并不能阻止我使用pdb堆栈跟踪,但问题是这个终端消息一直显示在pdb跟踪点的输入之间。

2 个答案:

答案 0 :(得分:2)

您可以在启动Odoo时将--logfile=<logfile>添加到参数中 - 这会将标准Odoo日志消息发送到该文件,调试器日志保持良好和干净。

即。我在/ usr / local / bin中有一个bash脚本,它调用:

python /path/to/odoo/odoo.py --addons-path=/path/to/addons,/path/to/custom/addons "$@"

$@告诉脚本最后接受任何其他参数,所以当我打电话时:

odoo --logfile=~/odoospam.log

我可以调试好看和整洁。 然后,如果您只想查看日志tail -f ~/odoospam.log

仍在尝试找出在docker容器中使用pdb进行调试的最佳方法,当我找到合适的方法时会更新它。

编辑: 在docker中找到了解决方法(Kudos to https://stackoverflow.com/users/941605/jamey):Docker-compose and pdb docker-compose run --service-ports odoo

答案 1 :(得分:0)

我建议你安装Visual Studio Code来调试Odoo:

  

Visual Studio Code是Microsoft为Windows,Linux和macOS开发的源代码编辑器。它包括对调试,嵌入式Git控件,语法突出显示,智能代码完成,代码片段和代码重构的支持。它是免费和开源的,虽然官方下载是在专有许可下。

首先,您需要在VSCode中安装Python Extension。然后,如果要开始调试,只需单击“调试”按钮并单击侧栏顶部的滚轮即可。文件launch.json将打开,您只需将此元素添加到底部。

{
    "name": "Python: Odoo",
    "type": "python",
    "request": "launch",
    "stopOnEntry": false,
    "pythonPath": "${config:python.pythonPath}",
    "console": "externalTerminal",
    "program": "/odoo_path/odoo.py",
    "args": [
        "--config=/odoo_config_path/.odoo_8.conf",
    ],
    "cwd": "${workspaceRoot}",
    "env": {},
    "envFile": "${workspaceRoot}/.env",
    "debugOptions": [
        "WaitOnAbnormalExit",
        "WaitOnNormalExit",
        "RedirectOutput"
    ]
}

添加后,您已经可以在VSCode下运行Odoo。有关启动配置click here

的详细信息

现在您可以像往常一样创建断点。您也可以使用调试器控制台。如果你像我一样使用属性:"console": "externalTerminal",你可以同时在外部控制台中显示日志

enter image description here