12
votes

Comment déboguer des plugins sublimes pendant le développement

Je veux déboguer mon plugin avec PDB, mais cela ne fonctionne pas. Je reçois ces erreurs xxx

a une idée? Ou une autre façon de déboguer un plugin sublime?


5 commentaires

Les traces de pile sont assez inutiles sans le code source


L'utilisation libérale des déclarations d'impression est toujours une option de débogage


@ERIC: The Stack Tray se termine dans une bibliothèque STD Python, c'est assez clair pour moi. Self.Quiser a été réglé sur une valeur true et le débogueur sortit en utilisant une exception explicite. Maintenant, Pourquoi Self.quitting est défini sur un La valeur de n'est pas connue, malheureusement, cela nécessiterait de déboguer le débogueur et les internaux sublimes.


@Martijnpieters: Mon point est toujours debout. Ce que je n'avais pas réalisé était que bdb était intégré et Nous avons le code source ...


Voir également PDB Débogage à distance sur prise sur la prise de texte sublime 2./a>


4 Réponses :



18
votes

Le problème est que sys.stdin code> n'est pas joint à rien normalement em>. Mais, sys.stdin code> fonctionne si vous démarrez Sublimetext2 à partir d'une console:

  • sur Mac, démarrez l'application en localisant l'exécutable dans le faisceau de ressources en entrant dans le chemin complet de la borne: p> XXX PRE> LI>

  • sous Windows, démarrez l'application à partir de la console Windows: P>

    import pdb, sys; pdb.Pdb(stdout=sys.__stdout__).set_trace()
    


10 commentaires

Cela ne semble pas fonctionner pour moi sous Windows - la console Windows revient immédiatement à l'invite, lancant un texte sublime en arrière-plan


@ERIC: Droite, je craignais que ce soit le cas. Il y a une ligne de commande 'distante' et il y a ensuite l'application elle-même. Y a-t-il un second .exe dans le dossier SUBLIMIMIMIMIMILE Texte 2 ? Ou est-ce que le sublime_text.exe ligne de commande prend des commutateurs de ligne de commande? sublimeext.exe existe-t-il dans le même endroit? Le FAQ suggère qu'il y a.


Sur votre système, cela fait-il également Raw_Input () Travailler dans la console de texte sublime, reportant de l'entrée de la console?


Nope, pas de seconde exe, et je me débats pour trouver les options de ligne de commande.


@Eric: cela fait raw_input () travail, bien que l'invite n'est pas sortie sur le terminal; Mais l'entrée du terminal est lue correctement.


Je l'ai donc testé sur mon Linux. Je travaille presque bien, mais n'est-il pas possible d'accéder à des variables déjà définies, mais je peux appeler la fonction et comme ceci.


En effet, cela pourrait être que les variables que vous avez définies dans la console Sublimeext2 ne seront pas visibles au débogueur; différents espaces de noms. Mais sinon vous avez un accès complet à l'interpréteur de Python et que c'est l'état.


Je ne définissons pas les variables de la console, je l'ai définie dans mon code mais oui est seulement agréable d'avoir une fonctionnalité


En théorie, il y a le -w ou - wait drapeau qui devrait empêcher que la console perd la mise au point. Et cela fonctionne bien avec quelques applications conscientes de l'éditeur de blocage (comme hg commit ). Mais sur cmd il retourne toujours sans attendre.


Merci! C'est vraiment génial!



2
votes

Travailler sur mon plugin, je n'avais pas beaucoup de chance avec PDB et "Imprimer" n'est pas une expérience de débogage efficace (par exemple, si vous n'êtes pas sûr d'où le défaut est, vous pouvez ajouter beaucoup de " Imprimer "- puis doivent les supprimer après).

Il y a une bien meilleure alternative si vous exécutez des fenêtres. La dernière version 2.2 du Outils Python pour Visual Studio fonctionne bien pour déboguer des plugins sublimes. Vous obtenez toutes les fonctionnalités de débogage régulières de Visual Studio et c'est une expérience polie. Il suffit de choisir "pluginhost.exe" et le moteur de débogage Python dans la boîte de dialogue ATTACH. Précédent à 2.2, les outils Python ne fonctionnaient pas correctement contre sublime, par exemple, ont été brisés.

Divulgation: je travaille dans Visual Studio mais ne travaille pas sur ces outils. J'ai récemment travaillé avec le développeur d'outils Python pour résoudre les bugs que j'ai rencontrés à l'aide de ces outils pour écrire mon plugin.

the Edition communautaire de Visual Studio 2015 est gratuit pour les développeurs individuels et les petites organisations. Assurez-vous simplement de vérifier les outils Python dans la boîte de dialogue Configuration. Et, bien sûr, vous devez exécuter des fenêtres.


2 commentaires

Vous pouvez également déboguer avec la communauté de Pycharm. Est gratuit et multi-plate-forme python oisif


Bonjour @cheerless, j'ai installé Visual Studio et ci-joint "plugin_host.exe". Je ne fais pas quoi faire à côté de commencer le débogage. Pourriez-vous vous décrire un peu sur les opérations? Merci.



4
votes

Le moyen le plus simple que j'ai trouvé était d'utiliser Visual Studio.

Vous devriez avoir les outils de développement Python pour Visual Studio (vous pouvez les télécharger en ouvrant le programme d'installation Visual Studio, en cliquant sur Plus, modifier et sélectionner le développement Python).

Pour déboguer Vous devez ouvrir Visual Studio, sélectionnez dans la barre d'outils: Débogage - Joindre au processus (Ctrl + ALT + P), puis recherchez «plugin_host.exe» et joindre. Puis ouvrez votre fichier 'plugin.py' et mettez un point d'arrêt quelque part et vous êtes prêt à partir.


0 commentaires