Come eseguire il debug dei completamenti di bash?


14

Ho creato alcune funzioni di completamento bash che sembrano funzionare isolatamente, ma mi danno risultati inaspettati quando tento di completare la scheda.

È possibile connettere bashdb, quindi tentare di eseguire il tab completo e passare al debug e determinare cosa non va?


2
Solo per aggiungere my in centesimi: dovresti usare set -xin in bash per eseguire il debug dei tuoi script. Utilizzare set +xper disabilitare.

Risposte:


6

set -x

Se set -xnella sessione interattiva o nello script di completamento automatico stesso, (quasi?) Ogni comando e i suoi risultati verranno stampati. Ciò include il lavoro svolto all'interno dello script di completamento automatico.

Questo può quindi essere ripristinato di nuovo con set +x.

-X

Dopo aver espanso ciascun comando semplice, per comando, comando caso, selezionare comando o aritmetica per comando, visualizza il valore espanso di PS4, seguito dal comando e dai suoi argomenti espansi o dall'elenco di parole associato.

-da Bash manual #Il set incorporato


2

Basta registrare / output dalle funzioni di completamento bash; dato che molto probabilmente non sono scienza missilistica, questo dovrebbe essere abbastanza facile da fare. Potrebbe essere possibile connettere bashdb, ma sembra inutile ...


Connettere bashdb sarebbe stato molto più semplice e, mi aspetto, più veloce dell'aggiunta di istruzioni di log agli script. Tuttavia, non so se sia possibile e la mancanza di risposte suggerirebbe che non lo è. Sono riuscito a risolvere il mio problema registrando lo stato in un file come suggerisci tu, ma la trasmissione delle informazioni di registrazione al terminale non è utile quando si lavora con i completamenti.
Dan Midwood,

3
@DanMidwood: utilizzare due terminali (ad es. Schermo + divisione). In uno, esegui il completamento, nel secondo, tail -fil registro.
Choroba,

@choroba: Bello. : D
Tamara Wijsman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.