El depurador pdb de Python se confunde cuando se llama al método Python después de un evento tree_but_open definido en XML

Estoy en el proceso de depurar algo en OpenERP usando Python 2.7.3. El depurador parece desincronizarse con el código al avanzar con el comando Siguiente (n). Cuando escribe un comando de depuración como una variable de impresión, puede dar una respuesta diferente cada vez que haga esto. También parece saltar hacia atrás al pasar por el código. Ver Código y salida a continuación.

Creo que el problema puede estar relacionado con la forma en que OpenERP llama a mi método a través de una statement exec () de Python leyendo el campo de código en el XML de OpenERP a continuación. ¿Es posible que llamar al código Python construido dinámicamente y llamado a través de exec () esté confundiendo al depurador pdb? Cuando llamo a la función desde un botón en lugar de a un evento tree_but_open, el depurador recorre el código correctamente.

Si este es el caso, ¿hay algún problema?

CODE se llama a través de esta acción OpenERP a continuación:

 ir.actions.server True code    action = self.view_calc_sales_tax(cr, uid, context)  wash state action request     Method1 Wash State    

PDB / CÓDIGO DE SALIDA (Observe que tengo que escribir “ids” dos veces para que imprima el valor):

 -> ctx["local_rate"] = res1["local_rate"] (Pdb) n > /home/glenn2/openerp6.1/addons/6.1/wash_tax2/wash_tax.py(169)view_calc_sales_tax() -> ctx["code"] = res1["code"] (Pdb) n > /home/glenn2/openerp6.1/addons/6.1/wash_tax2/wash_tax.py(172)view_calc_sales_tax() -> ids = [3333,4444,9999] (Pdb) n (Pdb) > /home/glenn2/openerp6.1/addons/6.1/wash_tax2/wash_tax.py(173)view_calc_sales_tax() -> self.pool.get('account.invoice').button_reset_taxes (cr,uid, ids, ctx) ids *** NameError: name 'ids' is not defined (Pdb) ids [3333, 4444, 9999] (Pdb) 

Información Adicional:

Creo que tiene que ver con que el depurador tenga problemas con varios subprocesos. El problema comienza a ocurrir después de las llamadas a __bootstrap_inner () en la biblioteca de subprocesos de Pythons. Alguien sabe si es posible habilitar el depurador de Python para varios subprocesos:

 (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)  self  (Pdb) self (Pdb)  self (Pdb)  self (Pdb)  self (Pdb)  self (Pdb)  self  (Pdb) self (Pdb)  

He usado el depurador de Python en Eclipse y PyDev para múltiples hilos. Inicialmente tuve algunos problemas, pero el equipo de PyDev los solucionó. Podría valer la pena probar PyDev para ver si el problema persiste.

Publiqué algunos detalles más sobre la configuración de OpenERP en PyDev en otra respuesta .