Question

Quelle est la méthode générale préférable de débogage/traçage des plugins vim ?Supposons que j'ai un plugin Foo assez sophistiqué, qui, sur une touche enfoncée F9 ouvre une nouvelle fenêtre avec le navigateur de fichiers et donne la possibilité de choisir un fichier, après quoi le nom du fichier est copié dans la fenêtre principale.J'aimerais voir ce qu'on appelle lorsque j'appuie sur le F9 clé, une sorte de trace d'appel.

Était-ce utile?

La solution

La meilleure façon que j'ai trouvée est d'utiliser le -V drapeau au démarrage de (g)vim.Vous pouvez spécifier un niveau de traçage N et un nom de fichier pour le journal écrit :

$ vim -V[N]{filename}

Ensuite, des messages de trace seront transmis pour chaque fichier sourcé.(Voir :help -V pour plus d'informations.)

Parcourir le fichier journal résultant peut être pénible, mais il est généralement assez informatif.Je trouve préférable d'afficher le fichier journal avant et après l'événement déclencheur (en appuyant sur <F9> dans votre cas) pour avoir une idée du moment où cela se produit.

Autres conseils

Si vim est déjà ouvert, essayez d'exécuter la commande manuellement sous le débogueur intégré de VIM.

1) Découvrez ce que fait vim lorsque vous appuyez sur la touche

:map <F-9>

2) Exécutez la commande mappée manuellement sous le débogueur

:debug _mapped_command_

3) À l'heure actuelle, vous devriez être redirigé vers le débogueur, donc

set verbose=20

4) Et enfin appuyez sur n et la touche Entrée pour continuer à exécuter le script

À ce stade, vous devriez voir tout un tas de résultats à l’écran.Vous pouvez appuyer sur Espace pour faire défiler l'écran, j/k pour vous déplacer par ligne.

Toute sortie commençant par « Ligne # : » est la ligne que Vim exécute à ce moment-là.

Pour les plugins sophistiqués, normalement le débogage de ligne de commande ou la traçage n'est pas suffisant.

Vous pouvez utiliser alputs pour faire un débogage visuel à l'intérieur de Vim.

Il est basé sur le débogage à distance, vous devez donc déboguer une instance de serveur de Vim.

Fondamentalement:

terminal 1:

$ vim --servername Foo
...
set breakpoint on any Foo function
do whatever operation which trigger Foo logic
...

Terminal 2:

$ vim
:BreakPts
:BPRemoteServ FOO
:BPDWhere locate (actual debug execution point)
:BPDNext or F12 (next execution line)
:BPDStep or F11 (step inside functions, dictionary functions)
:BPDEvaluate or F8 (if pressed on visual selection evaluates that)
:BPDCont or F5 (continue execution)

Voir certains plugins sont chargés de manière doudique afin que vous ayez besoin de fonctionner avec eux avant de définir des points d'arrêt.

Une fois chargé, vous pouvez définir des points d'arrêt de Vim connecté avec:

:BPFunctions (Show debuggeable fuctions on RemoteServer)
:BPScripts (Show debuggeable scripts on RemoteServer)
:BPPoints (Show defined breakpoints on RemoteServer)

J'ai réparer / modifier / évoluer beaucoup de plugins VIM grâce à ce grand plugin.

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