2012-03-13 7 views
15

Éstos son mis acciones en IPython:¿Es posible ejecutar comandos en IPython con depuración?

> import my_module 
> import ipdb 

Ahora, mi módulo carece de cualquier código ejecutable, que sólo declara clases. Por eso quiero hacer una declaración:

> g = my_module.Graph() 
> f = open('test.osm') 
> g.from_osm(f) 

Quiero poner un punto de interrupción en el interior Graph.from_osm, sin editar el archivo. No quiero poner las últimas líneas en el archivo y hacer python -m ipdb .... Solo quiero ejecutar comandos y depurar.

¿Esto es posible?

añadido: veo, es posible

%run -d script_name 

o

> import pdb 
> pdb.run('statement') 

pero es imposible hacer ipdb.run('statement'), no hay .run en ipdb!

+1

Hay un '.run' en ipdb 0.8. – gerrit

+1

posible duplicado de [Entrando en una función en IPython] (http://stackoverflow.com/questions/12646670/stepping-into-a-function-in-ipython) – LondonRob

Respuesta

2

Since IPython 3.2.2, %debug magic, si se le da un argumento (una sola línea o una celda), se ejecuta bajo depurador.

  • Se rompe antes de ejecutar cualquier cosa, permitiéndole establecer puntos de interrupción y/o comenzar a recorrer el código.
  • Y acepta un argumento --breakpoint que establece un punto de interrupción más (como parte del comando, se guardará en el historial de comandos, guardándote la escritura para invocaciones repetidas).
2

Tal vez la 'magia' comandos de depuración % y/o % pdb en IPython puede ayudar.

+5

No, no es lo que busco. Ambos se detienen en una excepción. Solo quiero ver la ejecución del programa paso a paso. –

+0

A partir de 'IPython 5',' debug' se detiene antes de ejecutar cualquier cosa, lo que le permite establecer puntos de interrupción y/o comenzar a recorrer el código. –

Cuestiones relacionadas