2009-02-17 31 views
8

He estado bastante acostumbrado a los depuradores paso a paso a lo largo de los años, tanto en el generador como en el uso del depurador pydev en Eclipse.Depuración de aplicaciones web

Actualmente, estoy creando algo en Python y ejecutándolo en Google App Engine, y debo agregar que soy bastante nuevo en el desarrollo de cualquier aplicación web real; Nunca he hecho mucho más que editar código HTML.

Por lo tanto, estoy ejecutando dev_appserver de Google y viendo mi trabajo en http://localhost, cavar, y en este momento, la única herramienta que estoy usando para identificar problemas es PMD (depurador pobre). . . básicamente escribiendo cosas en las páginas html para ver el valor de las variables locales.

¿Existe una mejor técnica para manejar esto?

Respuesta

7

dev_appserver es solo una secuencia de comandos python, simplemente puede usar el depurador pydev en esa secuencia de comandos con los argumentos adecuados hasta donde yo sé.

Aquí es una guía muy detallada sobre cómo hacerlo: "? ¿Hay una mejor técnica para hacer frente a esta"

http://www.ibm.com/developerworks/opensource/library/os-eclipse-mashup-google-pt1/index.html

+0

Oh, gran enlace. Ni siquiera había pensado en poner dev_apperver en la configuración de ejecución. Acabo de ejecutarlo en el directorio con mi aplicación, pero parece que debería funcionar. – Baltimark

2

Realmente no.

"depuradores paso a paso" son su problema. Son una especie de muleta mental que hace que sea más fácil obtener algo que parece que funciona.

Primero, mira http://code.google.com/appengine/docs/python/tools/devserver.html#The_Development_Console para algo que pueda ser útil.

En segundo lugar, tenga en cuenta que --debug Imprime mensajes de depuración detallados en la consola mientras se ejecuta.

Finalmente, tenga en cuenta que necesitará mucha experiencia en Python y experiencia en Google AppEngine para escribir cosas como aplicaciones web. Para obtener esa experiencia, la declaración print es realmente bastante buena. Le muestra lo que está sucediendo, y lo alienta a comprender realmente lo que espera que o intenten que ocurra.

Los depuradores son pasivos. Se trata de escribir código aleatorio, ver lo que sucede, hacer cambios hasta que funcione. He visto gente hacer esto.

La declaración de impresión está activa. Tienes que planificar lo que debería suceder, escribir el código y considerar los resultados cuidadosamente para ver si los planes funcionaron. Si no hace lo que pretendía, debe formular una hipótesis y probar su hipótesis. Si funciona, entonces "entendiste" lo que estaba pasando. Una vez que obtiene la semántica de Python y Google App Engine, su comprensión crece y esto se vuelve realmente fácil.

+0

Gracias. Sin ofender, pero realmente estaba buscando algo así como lo escribió Tomh. He usado pasos intermedios durante mucho tiempo y estoy familiarizado con sus beneficios y deficiencias, estoy buscando esa funcionalidad en mi aplicación. Sin embargo, esa consola de desarrollo parece muy buena. – Baltimark

+0

@Baltimark: sin ofender. Los depuradores paso a paso crean más problemas de los que resuelven, pero si crees que están ayudando, está bien. No están ayudando, pero es tu opinión sobre tu desarrollo lo que cuenta aquí, no mi experiencia. –

4

Yo sugeriría utilizar declaraciones de registro en lugar de impresiones, ya que puede controlarlas mejor. Python tiene una biblioteca de registro bastante buena incluida.

Para el registro desde Google App Engine a, p. Ej. Firebug también hay alguna herramienta útil llamada FirePython. Esto permite iniciar sesión en la consola Firebug desde su aplicación Django o WSGI (es middleware).

1

Mi caja de herramientas de depuración para GAE:

  • registro estándar de Python como un sustituto de print declaraciones
  • Werkzeug debugger si yo no quiero ir al registro de la consola en cada error (trabaja no todo, lo más notablemente sesión interactiva intérprete)
  • consola interactiva en http://localhost:8080/_ah/admin/interactive (no tan bueno como Django python manage.py shell pero aún así ...)

Los depuradores simbólicos no son tan valorados como en ningún otro lugar, posiblemente debido a los mecanismos de introspección y reflexión superiores de Python.

Cuestiones relacionadas