Question

De PDB

(Pdb) help l
l(ist) [first [,last]]
  List source code for the current file.
  Without arguments, list 11 lines around the current line
  or continue the previous listing.
  With one argument, list 11 lines starting at that line.
  With two arguments, list the given range;
  if the second argument is less than the first, it is a count.

La fonction « continuer la liste précédente » est vraiment bien, mais comment voulez-vous désactiver?

Était-ce utile?

La solution

Vous pourriez patch singe pour le comportement que vous voulez. Par exemple, voici un script complet qui ajoute une commande « reset_list » ou « rl » à pdb:

import pdb

def Pdb_reset_list(self, arg):
    self.lineno = None
    print >>self.stdout, "Reset list position."
pdb.Pdb.do_reset = Pdb_reset_list
pdb.Pdb.do_rl = Pdb_reset_list

a = 1
b = 2

pdb.set_trace()

print a, b

On pourrait imaginer patcher singe la commande standard list de ne pas conserver l'historique de lineno.

modifier: Et voici un patch:

import pdb
Pdb = pdb.Pdb

Pdb._do_list = Pdb.do_list
def pdb_list_wrapper(self, arg):
    if arg.strip().lower() in ('r', 'reset', 'c', 'current'):
        self.lineno = None
        arg = ''
    self._do_list(arg)
Pdb.do_list = Pdb.do_l = pdb_list_wrapper

a = 1
b = 2

pdb.set_trace()

print a, b

Autres conseils

fin mais nous espérons toujours utile. En pdb, faire l'alias suivant (que vous pouvez ajouter à votre fichier .pdbrc il est donc toujours disponible):

alias ll u;;d;;l

Ensuite, chaque fois que vous tapez ll, pdb énumérera de la position actuelle. Il fonctionne en remontant la pile, puis en bas de la pile, ce qui remet à zéro « l » pour afficher de la position actuelle. (Cela ne fonctionnera pas si vous êtes en haut de la trace de la pile.)

Si vous utilisez DPEB au lieu de pdb, vous pouvez utiliser " l » aller de l'avant comme dans pdb, mais « l ». remonte au numéro de la ligne actuelle, et « L » va en arrière dans le fichier. Vous pouvez également utiliser jusqu'à # pour continuer jusqu'à une ligne donnée. DPEB offre un tas d'autres délicatesses aussi. Vous avez besoin de déboguer à distance? Essayez serve() au lieu de set_trace() puis telnet (port 8080 est le port par défaut).

import epdb
epdb.serve()

Je ne pense pas qu'il y ait un moyen de le désactiver. Il m'a ennuyé assez qu'une fois que je suis allé chercher dans la source pdb pour voir s'il y avait une syntaxe non documentée, mais je ne trouve pas.

Il faut vraiment être une syntaxe qui signifie « Lister les lignes à proximité du pointeur d'exécution en cours. »

Essayez ceci.

(pdb) l .

Peut-être que vous pouvez toujours taper le point.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top