Je veux déboguer mon plugin avec PDB, mais cela ne fonctionne pas. Je reçois ces erreurs a une idée? Ou une autre façon de déboguer un plugin sublime? Strong> p> p>
4 Réponses :
Votre problème est que Ce que vous voulez est une interface de débogage à distance qui interagit à travers une autre chose que Stdio, telle que sys.stsdin code>
et sys.stsdout code> s> (modifier: stdout va à la console) sup > sont connectés dans les internes du texte sublime - où vous attendez-vous à pouvoir contrôler le débogueur? P>
RPDB CODE>
. P>
Merci pour cela. Je vais jeter un coup d'oeil.
Le problème est que 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>
sous Windows, démarrez l'application à partir de la console Windows: P>
sys.stdin code> n'est pas joint à rien normalement em>. Mais,
sys.stdin code> fonctionne si vous démarrez Sublimetext2 à partir d'une console:
import pdb, sys; pdb.Pdb(stdout=sys.__stdout__).set_trace()
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 i> .exe dans le dossier code> SUBLIMIMIMIMIMILE Texte 2 code>? Ou est-ce que le sublime_text.exe code> ligne de commande prend des commutateurs de ligne de commande?
sublimeext.exe code> 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 () CODE> 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 () code> 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 code> ou
- wait code> 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 code>). Mais sur
cmd code> il retourne toujours sans attendre.
Merci! C'est vraiment génial!
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). p>
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. P>
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. P>
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.
Le moyen le plus simple que j'ai trouvé était d'utiliser Visual Studio. p>
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). P>
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. P>
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 Code> a été réglé sur une valeur code> true code> et le débogueur sortit en utilisant une exception explicite. Maintenant, Pourquoi i>
Self.quitting code> est défini sur un
La valeur code> de i> 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 code> é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>