3

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

 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 跟踪点的键入之间。

4

2 回答 2

2

您可以在--logfile=<logfile>启动 Odoo 时添加参数 - 这会将标准 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 中执行此操作(感谢https://stackoverflow.com/users/941605/jamey):Docker-compose和 pdb docker-compose run --service-ports odoo

于 2016-03-21T17:21:05.863 回答
0

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

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

首先,您需要在 VSCode中安装Python 扩展。然后,如果要开始调试,只需单击“调试”按钮并单击侧边栏顶部的滚轮。该文件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。有关启动配置的更多信息,请单击此处

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

在此处输入图像描述

于 2017-12-09T00:37:51.093 回答