Comment déboguer les complétions bash?

14

J'ai créé des fonctions d'achèvement de bash qui semblent toutes fonctionner de manière isolée mais qui me donnent des résultats inattendus lorsque j'essaie de les terminer avec un onglet.

Est-il possible de se connecter à bashdb, puis de tenter de terminer quelque chose et de passer à l'étape suivante pour déboguer et déterminer ce qui ne va pas?

Dan Midwood
la source
2
Juste pour ajouter mon à cents: vous devez utiliser le set -xdans bash pour déboguer vos scripts. Utilisez set +xpour désactiver.

Réponses:

6

set -x

Si vous êtes set -xdans la session interactive ou dans le script de saisie semi-automatique lui-même, (presque?) Chaque commande et ses résultats seront imprimés. Cela inclut le travail effectué à l'intérieur du script de saisie semi-automatique.

Cela peut ensuite être calmé à nouveau avec set +x.

-X

Après avoir développé chaque commande simple, pour la commande, la commande de casse, la commande de sélection ou l'arithmétique de la commande, affichez la valeur développée de PS4, suivie de la commande et de ses arguments développés ou de la liste de mots associée.

-du manuel Bash #The Set Builtin

Christopher Peterson
la source
2

Il suffit de se connecter / sortir des fonctions de complétion bash; comme il ne s'agit probablement pas de science fusée, cela devrait être assez facile à faire. Il peut être possible de connecter bashdb, mais cela semble inutile ...

Tamara Wijsman
la source
La connexion de bashdb aurait été beaucoup plus simple et, je pense, plus rapide que l'ajout d'instructions de journal aux scripts. Cependant, je ne sais pas si c'est possible, et le manque de réponses suggère que ce n'est pas le cas. J'ai réussi à résoudre mon problème en enregistrant l'état dans un fichier comme vous le suggérez, mais la sortie des informations de journalisation sur le terminal n'est pas utile lorsque vous travaillez avec des finitions.
Dan Midwood
3
@DanMidwood: Utilisez deux terminaux (par exemple écran + split). Dans l'un, exécutez l'achèvement, dans le second, tail -fle journal.
choroba
@choroba: Sympa. : D
Tamara Wijsman