如何在OpenERP 6.1中调试python代码

时间:2012-04-10 11:30:38

标签: python openerp

我正在使用OpenERP 6.1,我无法调试python代码 通过在python代码中给出print语句。

使用OpenERP 6.0,我们提供服务器路径非常简单/可行 后跟模块名称和数据库名称来调试代码。

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

请帮忙!! 提前谢谢..

5 个答案:

答案 0 :(得分: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。

答案 1 :(得分:2)

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

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

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

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

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

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

  

Ex:$ {workspace_loc:server / openerp-server}。

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

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

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

  

Ex: - adadons ../ 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”调试代码来享受,您可以看到变量的值。

答案 2 :(得分: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

答案 3 :(得分:1)

检查您是否有:

logfile = None
在openerp-server.conf中的

,它为您提供了标准输出的日志。

有帮助吗?

答案 4 :(得分: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)