web-dev-qa-db-fra.com

débogage de scripts vim et python

Existe-t-il un moyen de déboguer les scripts python sans laisser vim dans les systèmes * nix (exécution du script, configuration des points d'arrêt, affichage des variables dans la liste de suivi, etc.)?

30
varnie

Utilisez pdb :

import pdb
def main():
  list = [1,2,3]
  pdb.set_trace()
  list = [2,3,4]

if __== '__main__':
    main()

Maintenant, utilisez :!python % et vous atteindrez votre point d'arrêt et serez capable de déboguer de manière interactive, comme dans gdb .

32

Essayez pyclewn . Cela permet d'utiliser vim comme front-end pour pdb. Vous pouvez créer/supprimer des points d'arrêt, contrôler le déroulement du processus de débogage, consulter les valeurs de vos variables. Tout de vim!

7
ashim

Essayez aussi https://pypi.python.org/pypi/pudb - c'est comme pdb mais plus avancé. Contient le code en surbrillance, la pile, indiquant les valeurs disponibles, etc. La solution non seulement vim mais fonctionne parfaitement pour moi.

Trois étapes:

Installer:

pip installer pudb

Coller set_trace dans le code

depuis pudb import set_trace; set_trace ()

Exécutez votre code 

4
alexche8

Vim et pdb-clone est la combinaison que j'utilise. J'utilise Home - pyclewn qui fournit un remplacement de pdb appelé pdb-clone, qui est assez rapide par rapport à vanilla pdb. Cela s’intègre bien avec vim via un plugin, et ce que j’apprécie le plus, c’est qu’il s’occupe des points de rupture en dehors du code, sans y placer de traces, et donc ne pas modifier mes numéros de ligne. Il n'a pas encore de fenêtre de surveillance pour Python. Vous pouvez aussi regarder vim-debug , que je ne pouvais pas utiliser pour travailler avec ma configuration de surbrillance existante.

1
Viktor Vojnovski

Le plug-in vimpdb intègre le débogueur Python pdb dans l'éditeur VIM.

Je le recommande.

J'espère que ça aide.

0
simone

Voir la section "Débogage" dans this blog. Il montre comment configurer F7 pour définir des points d'arrêt et Maj + F7 pour supprimer des points d'arrêt. Il utilise également pdb, comme mentionné précédemment. Avec une petite modification, vous pouvez remplacer l'utilisation de pdb par ipdb (pdb en utilisant ipython ), ce qui est beaucoup plus agréable à utiliser.

0
Walter