2012-02-17 13 views
5

Estoy usando Eclipse (con PyDev) para delevop una aplicación web2py. He seguido this guide para configurar las cosas. Ahora, quiero depurar mi aplicación usando Eclipse. Sin embargo, por alguna razón, la ejecución no se detiene (siempre) cuando alcanza un punto de interrupción.web2py Depuración con Eclipse

He creado dos aplicaciones web2py separadas (en dos proyectos de Eclipse). La depuración parece funcionar en una, pero no en la otra. Ambos proyectos hacen referencia a la misma instalación de web2py. Por lo tanto, independientemente del proyecto I "Ejecutar .../Depurar ..." en Eclipse, web2py ofrece ambas aplicaciones a través del navegador.

He creado un simple archivo de prueba (controladores/test.py) de la siguiente manera:

def index(): 
    print 'I should break.' 
    print 'After the breakpoint' 
    return dict(test=1) 

No es un punto de interrupción se establece en el primer print comunicado.

He puesto este archivo en ambos proyectos (llamémoslos A y B).

tengo las siguientes observaciones:

Cuando inicio la depuración de Eclipse, el depurador detiene la ejecución siempre que el punto de interrupción en el test.py archivo que pertenece a proyectar una, pero parece ignorar el punto de interrupción en el archivo test.py que pertenece al proyecto B. No importa si lancé web2py desde (Eclipse-) proyecto A o proyecto B. El comportamiento siempre es el mismo. Puntos de interrupción en archivos que pertenecen al trabajo del proyecto A, aquellos en el proyecto B son ignorados.

He comparado todas las propiedades del proyecto y ejecuto las propiedades de configuración y no puedo encontrar una diferencia (a excepción del nombre del proyecto y la ruta).

La ejecución de ambos proyectos funciona a la perfección. Por ejemplo, la salida de las declaraciones print del archivo de prueba que se muestra arriba siempre se muestra en la consola de Eclipse.

¿Alguien tiene una idea de lo que está pasando aquí? ¿Cuál podría ser la diferencia que lo hace funcionar en el proyecto A pero no en el proyecto B?

Estoy usando Python 2.7.1.

Cuando fijo

DEBUG_TRACE_LEVEL = 3 
DEBUG_TRACE_BREAKPOINTS = 3 

eclipse/plugins/org.python.pydev.debug/pysrc/pydevd_constants.py (como se solicita en los comentarios), me sale el siguiente salida de la consola:

depurador pydev: comenzando ('Archivo de ejecución', 'C: \ misc \ web2py_src \ web2py \ web2py.py') ('arguments:', "['C: \\ misc \\ web2py_src \\ web2py \\ web2py.py '] ") (' Conectándose a ',' 127.0.0.1 ',': ',' 49565 ') (' Conectado. ',) (' comando recibido ',' 501 \ T1 T1.1' \) enviar cmd: CMD_VERSION 501 1 1,1

sending cmd: CMD_THREAD_CREATE 103 2 <xml><thread name="pydevd.reader" id="-1"/></xml> 

sending cmd: CMD_THREAD_CREATE 103 4 <xml><thread name="pydevd.writer" id="-1"/></xml> 

('received command ', '111\t3\tC:\\misc\\workspace\\Newtoon\\controllers\\test.py\t12\t**FUNC**index\tNone') 
Added breakpoint:c:\misc\workspace\newtoon\controllers\test.py - line:12 - func_name:index 
('received command ', '111\t5\tC:\\misc\\workspace\\Newtoon\\controllers\\importer.py\t11\t**FUNC**index\tNone') 
Added breakpoint:c:\misc\workspace\newtoon\controllers\importer.py - line:11 - func_name:index 
('received command ', '111\t7\tC:\\misc\\web2py_src\\web2py\\applications\\GeorgsTestApp\\controllers\\unique_names.py\t6\t**FUNC**index\tNone') 
Added breakpoint:c:\misc\web2py_src\web2py\applications\georgstestapp\controllers\unique_names.py - line:6 - func_name:index 
('received command ', '111\t9\tC:\\misc\\web2py_src\\web2py\\applications\\GeorgsTestApp\\controllers\\test.py\t12\t**FUNC**index\tNone') 
Added breakpoint:c:\misc\web2py_src\web2py\applications\georgstestapp\controllers\test.py - line:12 - func_name:index 
('received command ', '122\t11\t;;') 
Exceptions to hook : [] 
('received command ', '124\t13\t') 
('received command ', '101\t15\t') 
No handlers could be found for logger "web2py" 
web2py Web Framework 
Created by Massimo Di Pierro, Copyright 2007-2011 
Version 1.99.4 (2011-12-14 14:46:14) stable 
Database drivers available: SQLite3, pymysql 
Starting hardcron... 
WARNING:web2py.cron:WEB2PY CRON: Disabled because no file locking 
sending cmd: CMD_THREAD_CREATE 103 6 <xml><thread name="MainThread" id="pid5740_seq4" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 8 <xml><thread name="Thread-4" id="pid5740_seq5" /></xml> 

please visit: 
    http://127.0.0.1:8000 
starting browser... 
sending cmd: CMD_THREAD_CREATE 103 10 <xml><thread name="Dummy-7" id="pid5740_seq6" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 12 <xml><thread name="Dummy-6" id="pid5740_seq7" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 14 <xml><thread name="Thread-13" id="pid5740_seq8" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 16 <xml><thread name="Thread-10" id="pid5740_seq9" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 18 <xml><thread name="Thread-11" id="pid5740_seq10" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 20 <xml><thread name="Port8000" id="pid5740_seq11" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 22 <xml><thread name="Thread-12" id="pid5740_seq12" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 24 <xml><thread name="Thread-8" id="pid5740_seq13" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 26 <xml><thread name="Thread-9" id="pid5740_seq14" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 28 <xml><thread name="Thread-16" id="pid5740_seq15" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 30 <xml><thread name="Thread-15" id="pid5740_seq16" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 32 <xml><thread name="Thread-18" id="pid5740_seq17" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 34 <xml><thread name="Thread-14" id="pid5740_seq18" /></xml> 

sending cmd: CMD_THREAD_CREATE 103 36 <xml><thread name="Thread-17" id="pid5740_seq19" /></xml> 

WARNING:web2py.cron:WEB2PY CRON: Disabled because no file locking 
I should break. 
After the breakpoint 
sending cmd: CMD_THREAD_SUSPEND 105 38 <xml><thread id="pid5740_seq12" stop_reason="111"><frame id="97199496" name="index" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Capplications%255Cgeorgstestapp%255Ccontrollers%255Ctest.py" line="12">"</frame><frame id="95957960" name="%26lt%3Blambda%26gt%3B" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Cglobals.py" line="172">"</frame><frame id="100912680" name="%26lt%3Bmodule%26gt%3B" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Capplications%255Cgeorgstestapp%255Ccontrollers%255Ctest.py" line="19">"</frame><frame id="66219576" name="restricted" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Crestricted.py" line="204">"</frame><frame id="96138760" name="run_controller_in" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Ccompileapp.py" line="537">"</frame><frame id="96513256" name="serve_controller" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Cmain.py" line="202">"</frame><frame id="62835496" name="wsgibase" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Cmain.py" line="493">"</frame><frame id="62834872" name="app_with_logging" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Cmain.py" line="676">"</frame><frame id="96071288" name="run_app" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Crocket.py" line="1994">"</frame><frame id="66212296" name="run" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Crocket.py" line="1302">"</frame><frame id="95948632" name="__bootstrap_inner" file="c%253A%255Cpython27%255Clib%255Cthreading.py" line="530">"</frame><frame id="96053672" name="__bootstrap" file="c%253A%255Cpython27%255Clib%255Cthreading.py" line="503">"</frame></thread></xml> 

WARNING:web2py.cron:WEB2PY CRON: Disabled because no file locking 
('received command ', '106\t17\tpid5740_seq12') 
('processing internal command ', '<pydevd_comm.InternalRunThread instance at 0x0000000005F82E88>') 
I should break. 
After the breakpoint 
sending cmd: CMD_THREAD_RUN 106 40 pid5740_seq12 None 

El comportamiento no cambia. El punto de interrupción en la aplicación B se ignora, mientras que el de la aplicación A funciona.

+0

¿Qué versión de Python estás usando? ¿Puedes cambiar eclipse \ plugins \ org.python.pydev.debug \ pysrc \ pydevd_constants.py y establecer DEBUG_TRACE_LEVEL = 3 y DEBUG_TRACE_BREAKPOINTS = 3, ejecutar tu programa en ambos casos y agregar los resultados a la pregunta? –

Respuesta

1

Me he encontrado con un problema similar, donde no pude conseguir puntos de interrupción para trabajar (pydev breakpoints not working).

Todavía no hay solución, pero tal vez sea útil saber que no estoy usando web2py.