2011-05-31 16 views
34

Tengo una extensión de Python que he creado y usado con éxito en Windows, OSX y Linux. Ahora necesito poder depurar esta extensión de Python. Soy reacio al uso de gdb en la línea de comandos, así que realmente me gustaría que esto funcione en Eclipse.Depuración de una extensión de Python en Eclipse

Para empezar, hice todo lo posible para seguir las instrucciones en http://www.heikkitoivonen.net/blog/2008/07/21/debugging-python-extension-written-in-c-with-eclipse/, y agregué la carpeta para la fuente Python así como la carpeta para el código de extensión python como carpetas de origen para el proyecto vacío. Dado que es relativamente fácil obtener compilaciones de depuración de todo lo requerido en Linux, comencé con el desarrollo de depuración en Ubuntu.

Una vez me dieron una versión de depuración de pitón (llamémosle python_d), me encontré con el setup.py para mi extensión con

python_d setup.py build 

que también debería producir una versión de depuración del módulo de extensión. He verificado que los símbolos se exportan abriendo la extensión como una aplicación en Eclipse y puedo ver el código fuente vinculado con el objeto compartido de Python.

Ahora, si creo otro proyecto en Eclipse con la carpeta de mi código y agrego un punto de interrupción en la fuente que se usa para crear la extensión, no se detiene en el punto de interrupción. Es completamente posible que me esté perdiendo algo bastante crítico aquí, pero por mi vida no puedo hacer que funcione. La clave del problema es:

¿Cómo se puede hacer que Eclipse se detenga en un punto de interrupción en un módulo de extensión de Python?

+1

¿Se puede establecer un punto de interrupción justo antes de que el código python llame al código c? Si es así, ¿puedes usar "entrar" para ingresar a la función c a la que llamas? –

Respuesta

1

¿Qué compilador está utilizando, MSVC o GCC? Para MSVC, puede iniciar python primero y adjuntar python_d.exe (windbg o visual studio), luego puede cargar su módulo, configurar el punto de interrupción, puede verificar si el símbolo de su módulo se cargó en las ventanas de debug-> módulo (MSVC).