1

我正在使用 OpenERP 6.1,我无法通过在 python 代码中提供打印语句来调试 python 代码。

这在 OpenERP 6.0 中非常容易/可能,我们给出了服务器路径,后跟模块名称和数据库名称来调试代码。

我如何使用 OpenERP 6.1 实现这一目标?

请帮忙!!提前致谢..

4

5 回答 5

2

要在 eclipse 中调试 Openerp+python 代码,请在调试透视图中启动 eclipse 并按照给定的步骤操作:

1:按“ctr+c”停止你的openERP运行服务器。

2:在 Eclipse 中,转到菜单“运行/调试配置”。在“Python Run”下的配置窗口中,创建新的调试配置(双击“Python Run”)。

3:创建新的调试配置后,请按照给定的步骤操作:

3.1:在“项目”下的“主”选项卡中,从工作区中选择“服务器”项目或文件夹(Openerp Server 所在的文件夹)。

3.2:在“主模块”下写入“openerp-server”的位置。

例如:${workspace_loc:server/openerp-server}。

3.3:在“程序参数”下的“参数”选项卡中,单击“变量”按钮,将出现新窗口。

3.4:然后单击“编辑变量”按钮创建新的“变量”,将出现新窗口。

3.5:按下“新建”按钮并将您的插件路径作为值。

例如:--addons ../addons,../your_module_path

3.6:在所有打开的窗口中按确定,然后“应用”。

4:现在进入“PyDev Package Explorer”视图,转到 6.1/server 并右键单击“openerp-server”文件,选择“Debug As --> Python Run”。

5:现在在“控制台”中你可以看到你的服务器已经启动了。

6:现在打开您要调试的 .py 文件并设置断点。

7:现在从'gtk'或'web-client'开始你的模块表单,当执行到达断点时执行将停止。

8:现在通过按“F5、F6、F7”来调试您的代码,您可以看到变量的值。

于 2012-07-27T10:44:48.190 回答
2

嗨朋友你可以安装 ipython。使用 ipython,您可以在命令提示符下调试 openerp 6.1。请确保您已经安装了这些软件包。

sudo apt-get install python-dateutil python-feedparser python-gdata python-ldap python-libxslt1 python-lxml python-mako python-openid python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi

我从 http://www.theopensourcerer.com/2012/02/22/how-to-install-openerp-6-1-on-ubuntu-10-04-lts/ 获取了这份清单

你也可以试试pycharm。

于 2012-04-19T09:22:07.240 回答
1

检查您是否拥有:

logfile = None

在您的 openerp-server.conf 中,通过标准输出为您提供日志。

它有帮助吗?

于 2012-04-25T16:44:17.150 回答
1

我在EclipsePyDev下运行 6.1 服务器没有任何问题。这让我可以添加断点并单步执行代码。以下是我使用的论点:

--addons-path ${workspace_loc:openerp-addons-trunk},${workspace_loc:openerp-web-trunk}/addons --config ${workspace_loc:openerp-config/src/server.config}

我发现最有用的两个断点位于 RPC 调用的两端。在服务器端,我在这一行放置了一个断点netsvc.dispatch_rpc()

result = ExportService.getService(service_name).dispatch(method, params)

我不经常调试客户端,而且并非所有请求都通过相同的路径,但一个有用的断点是rpc.tinySocket_gw.execute().

当然,这两个断点都看到了很多流量,所以我只有在探索一些我不熟悉的功能时才使用它们,而且我不知道代码会在哪里执行。在断点上设置条件也很有用,因此它仅在对特定模型或参数值的请求通过时触发。

这是我使用的配置文件:

[options]
debug_mode = False

admin_passwd = ******
db_user = ******
db_password = *******
price_accuracy = 5
smtp_server = **********
ftp_server_port = 8022
ftp_server_passive_ports = 8192:8447
translate_data = False
#log_level = debug_rpc_answer
于 2012-04-10T16:43:27.310 回答
0

第一的:import logging

然后 :

def ExampleFunction(self,cr,uid,ids,context):
        log = logging.getLogger("ExampleClass -- ExampleFunction")
        log.info('test') 
        return True

在您的 openerp 文件夹/server/server/openerp-server.log文件中,您将在log.info此处看到内容(ExampleClass -- ExampleFunction: test)

于 2015-07-07T13:38:21.277 回答