当Python方法在XML中定义的树但打开事件之后调用时,Python pdb调试器会感到困惑
我正在使用Python2.7.3在OpenERP中调试一些东西。当单步执行下一个(n)命令时,调试器似乎与代码不同步。键入调试器命令(如打印变量)时,每次执行此操作时,它可能会给出不同的答案。在单步执行代码时,它似乎也会向后跳过。请参阅下面的代码和输出 我相信问题可能与OpenERP通过Python exec()语句通过读取下面OpenERP XML中的代码字段来调用我的方法有关。调用动态构造并通过exec()调用的Python代码可能会混淆pdb调试器吗?当我从按钮而不是树但打开事件调用函数时,调试器会很好地逐步完成代码 如果是这种情况,是否有解决办法 通过以下OpenERP操作调用代码:当Python方法在XML中定义的树但打开事件之后调用时,Python pdb调试器会感到困惑,python,openerp,Python,Openerp,我正在使用Python2.7.3在OpenERP中调试一些东西。当单步执行下一个(n)命令时,调试器似乎与代码不同步。键入调试器命令(如打印变量)时,每次执行此操作时,它可能会给出不同的答案。在单步执行代码时,它似乎也会向后跳过。请参阅下面的代码和输出 我相信问题可能与OpenERP通过Python exec()语句通过读取下面OpenERP XML中的代码字段来调用我的方法有关。调用动态构造并通过exec()调用的Python代码可能会混淆pdb调试器吗?当我从按钮而不是树但打开事件调用函数时
<record id="action_wash_st_method1" model="ir.actions.server">
<field name="type">ir.actions.server</field>
<field name="condition">True</field>
<field name="state">code</field>
<field name="model_id" ref="model_view_tree_display_address_list"/>
<field eval="5" name="sequence"/>
<field name="code">
action = self.view_calc_sales_tax(cr, uid, context)
</field>
<field name="name">wash state action request</field>
</record>
<record model="ir.values" id="action_wash_st_tax_trigger_method1" >
<field name="key2" eval="'tree_but_open'" />
<field name="model" eval="'view.tree.display.address.list'" />
<field name="name">Method1 Wash State</field>
<field name="value" eval="'ir.actions.server,%d'%action_wash_st_method1"/>
<field name="object" eval="True" />
</record>
其他信息:
我认为这与调试器在处理多个线程时遇到问题有关。在调用Pythons线程库中的_bootstrap_inner()后,问题开始出现。是否有人知道是否可以为多个线程启用Python调试器:
(Pdb) > /home/glenn2/usr/local/lib/python2.7/threading.py(526)__bootstrap()
-> self.__bootstrap_inner()
>(Pdb) /home/glenn2/usr/local/lib/python2.7/threading.py(526)__bootstrap()->None
-> self.__bootstrap_inner()
self
(Pdb) <Thread(Thread-35, initial)>
self
<Thread(Thread-34, stopped 47994097374976)>
(Pdb) self
(Pdb) <Thread(Thread-34, stopped 47994097374976)>
self
(Pdb) <Thread(Thread-35, initial)>
self
(Pdb) <Thread(Thread-34, stopped 47994097374976)>
self
(Pdb) <Thread(Thread-35, initial)>
self
(Pdb) <Thread(Thread-34, stopped 47994097374976)>
self
<Thread(Thread-35, initial)>
(Pdb) self
(Pdb) <Thread(Thread-34, stopped 47994097374976)>
(Pdb)>/home/glenn2/usr/local/lib/python2.7/threading.py(526)\u bootstrap()
->self.\uuu引导\u内部()
>(Pdb)/home/glenn2/usr/local/lib/python2.7/threading.py(526)\uu bootstrap()->None
->self.\uuu引导\u内部()
自己
(Pdb)
自己
(Pdb)自我
(Pdb)
自己
(Pdb)
自己
(Pdb)
自己
(Pdb)
自己
(Pdb)
自己
(Pdb)自我
(Pdb)
我在Eclipse和PyDev中为多个线程使用了Python调试器。起初我遇到了一些问题,但PyDev团队解决了这些问题。也许值得尝试一下PyDev,看看您的问题是否仍然存在
我在年发布了一些关于在PyDev下设置OpenERP的详细信息
(Pdb) > /home/glenn2/usr/local/lib/python2.7/threading.py(526)__bootstrap()
-> self.__bootstrap_inner()
>(Pdb) /home/glenn2/usr/local/lib/python2.7/threading.py(526)__bootstrap()->None
-> self.__bootstrap_inner()
self
(Pdb) <Thread(Thread-35, initial)>
self
<Thread(Thread-34, stopped 47994097374976)>
(Pdb) self
(Pdb) <Thread(Thread-34, stopped 47994097374976)>
self
(Pdb) <Thread(Thread-35, initial)>
self
(Pdb) <Thread(Thread-34, stopped 47994097374976)>
self
(Pdb) <Thread(Thread-35, initial)>
self
(Pdb) <Thread(Thread-34, stopped 47994097374976)>
self
<Thread(Thread-35, initial)>
(Pdb) self
(Pdb) <Thread(Thread-34, stopped 47994097374976)>