49 votes

Comment puis-je faire en sorte que ipdb affiche plus de lignes de contexte lors du débogage ?

Par défaut, lors du débogage dans IPython, ipdb affiche une ligne au-dessus et une ligne en dessous de la position actuelle dans le code.

Existe-t-il un moyen simple d'agrandir un peu la zone affichée ? Je pense que ce serait configurable, mais je n'ai pas pu le trouver.

25voto

Garrett Points 1561

Vous pouvez obtenir plus de contexte en faisant :

 ipdb.set_trace(context=21)

Taille du contexte permanent

Pour définir de manière permanente la taille du contexte, recherchez le répertoire d'installation en faisant

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

qui vous montrera un fichier __init__.py Ouvrez ce fichier et recherchez la ligne (qui peut également être trouvée dans l'IPDB __main__.py :

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

modifiez le 3 en autant de lignes de contexte que vous le souhaitez.

11voto

fastmultiplication Points 1055

OK, j'ai trouvé l'endroit dans le code source IPython pour le faire. Dans mon installation c'est à

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

Change ça:

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

à

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

C'est génial!

Pour IPython 4.0.1, dans debugger.py, ajoutez simplement ceci :

 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X