当Python方法在XML中定义的树但打开事件之后调用时,Python pdb调试器会感到困惑

当Python方法在XML中定义的树但打开事件之后调用时,Python pdb调试器会感到困惑,python,openerp,Python,Openerp,我正在使用Python2.7.3在OpenERP中调试一些东西。当单步执行下一个(n)命令时,调试器似乎与代码不同步。键入调试器命令(如打印变量)时,每次执行此操作时,它可能会给出不同的答案。在单步执行代码时,它似乎也会向后跳过。请参阅下面的代码和输出 我相信问题可能与OpenERP通过Python exec()语句通过读取下面OpenERP XML中的代码字段来调用我的方法有关。调用动态构造并通过exec()调用的Python代码可能会混淆pdb调试器吗?当我从按钮而不是树但打开事件调用函数时

我正在使用Python2.7.3在OpenERP中调试一些东西。当单步执行下一个(n)命令时,调试器似乎与代码不同步。键入调试器命令(如打印变量)时,每次执行此操作时,它可能会给出不同的答案。在单步执行代码时,它似乎也会向后跳过。请参阅下面的代码和输出

我相信问题可能与OpenERP通过Python exec()语句通过读取下面OpenERP XML中的代码字段来调用我的方法有关。调用动态构造并通过exec()调用的Python代码可能会混淆pdb调试器吗?当我从按钮而不是树但打开事件调用函数时,调试器会很好地逐步完成代码

如果是这种情况,是否有解决办法

通过以下OpenERP操作调用代码:

<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)>