2011-06-05 9 views

Respuesta

12

Bien, encontré el lugar en el código fuente de IPython para hacer esto. En mi instalación es en

.../python2.7/site-packages/ipython-0.10.2-py2.7.egg/IPython/Debugger.py:327: 

cambiar esta situación:

def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ', 
         context = 3): 

a

def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ', 
         context = 11): 

Es increíble!

Para IPython 4.0.1, en debugger.py simplemente añadir lo siguiente:

class Pdb(OldPdb): 
    """Modified Pdb class, does not load readline.""" 

    def __init__(self,color_scheme='NoColor',completekey=None, 
       stdin=None, stdout=None, context=None): 
     context=20 
+2

me encontré la mía en un archivo diferente en Ubuntu 12.04 -/usr/lib/python2.7/dist-packages/IPython/core/debugger.py – user1953384

+8

editar las entrañas del paquete de dependencia con las manos desnudas, no de la manera en que generalmente se quiere configurar algo ... –

30

Puede escribir l en IPDB para mostrar varias líneas más del contexto actual

y puede seguir golpeando l y continúa revelando más líneas desde el archivo

Si desea mostrar más líneas de contexto alrededor de la línea actual, puede escribir l para obtener la línea actual. Y luego escriba l curr_line - 10, curr_line + 10. Digamos que estaba en la línea 50 y quería ver las 20 líneas circundantes. Escribiría: l 40,60 para ver más.

Según lo observado por @jrieke en un comentario, también puede pulsar ll para obtener una mayor porción del contexto. Lo bueno de ll es que se imprimirá desde el comienzo del método actual (mientras que l consecutivos revelan más líneas debajo de su punto de corte).

+1

Agregando a esto: También puede ingresar 'll 'para obtener más líneas a la vez. – jrieke

+1

Creo que esta respuesta debe ser la aceptada. – stefanfoulis

+0

La pregunta requiere que esto se haga de manera predeterminada, no a través de acciones adicionales del usuario. – fastmultiplication

10

Puede obtener más contexto haciendo:

ipdb.set_trace(context=21) 

(hay a bug introdujo en 0.10.0 que rompe esto, pero debe fijarse en breve)

tamaño contexto Permanente

Para establecer permanentemente el tamaño del contexto, busque el directorio de instalación haciendo

python -c 'import ipdb; print(ipdb)' 

que le mostrará un archivo __init__.py. . Abrir ese archivo y encontrar la línea (que también puede ser encontrado en __main__.py de IPDB:

def set_trace(frame=None, context=3): 

cambio de los 3 que sin embargo muchas líneas de contexto que desea

+0

ipdb v0.10.2 aún no se ha lanzado y no puedo encontrar nada relacionado con IPDB_CONTEXT_SIZE en ninguna parte, ni siquiera en su repositorio github. – gnebehay

+0

@gnebehay, tienes razón, gracias. He actualizado mi respuesta. – Garrett

Cuestiones relacionadas