Starten Sie Ihr Bash-Skript mit bash -x ./script.sh
oder fügen Sie es hinzu set -x
, um die Debug-Ausgabe zu sehen.
Zusätzlich mit bash
4.1 oder neuer:
Wenn Sie die Debug-Ausgabe in eine separate Datei schreiben möchten, fügen Sie dies Ihrem Skript hinzu:
exec 5> debug_output.txt
BASH_XTRACEFD="5"
Siehe: https://stackoverflow.com/a/25593226/3776858
Wenn Sie die Zeilennummern sehen möchten, fügen Sie Folgendes hinzu:
PS4='$LINENO: '
Wenn Sie Zugriff auf den
logger
Befehl haben, können Sie hiermit die Debug-Ausgabe über Ihr Syslog mit Zeitstempel, Skriptname und Zeilennummer schreiben:
#!/bin/bash
exec 5> >(logger -t $0)
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x
# Place your code here
Sie können Option -p
des logger
Befehls eine individuelle Einrichtung und Pegel einzustellen Ausgabe über lokale syslog auf seine eigene Logfile zu schreiben.
BASH_XTRACEFD="5"
bash schreibt die Trace - Ausgabe erzeugt , wennset -x
aktiviert wird Deskriptordatei 5.exec 5> >(logger -t $0)
Descriptor leitet die Ausgabe von Datei 5 zulogger
Befehl.Verwenden
set -x
Ich benutze immer
set -x
undset +x
. Sie können Bereiche, die Sie sehen möchten, umbrechen, um die Ausführlichkeit zu erhöhen / zu verringern.log4bash
Auch wenn Sie Entwicklungsarbeit geleistet haben und mit dem Stil der Logger unter den Namen log4j, log4perl usw. vertraut sind, sollten Sie log4bash verwenden .
AuszugVon dort aus können Sie in Ihren Bash-Skripten Folgendes tun:
Ergebnis dieser Art von Ausgabe:
log4sh
Wenn Sie etwas Tragbareres brauchen, gibt es auch das Ältere
log4sh
. Arbeiten ähnlich wielog4bash
hier erhältlich:quelle
alias say="spd-say"
in meiner .bashrc, die densay
Befehl aus anderen Distributionen oder OS X imitiert.Es gibt einen Bash-Debugger, bashdb , der auf vielen Distributionen installiert werden kann. Es verwendet den integrierten erweiterten Debugging-Modus von bash (
shopt -s extdebug
). Es sieht sehr nach gdb aus; Hier ist eine Beispielsitzung, um etwas Geschmack zu geben:Wie in gdb wird die Anweisung kurz vor ihrer Ausführung angezeigt . So können wir Variablen untersuchen, um zu sehen, was die Anweisung tun wird, bevor sie es tut.
Das wollen wir nicht! Schauen wir uns noch einmal die Parametererweiterung an.
OK, das funktioniert. Stellen wir
newf
den richtigen Wert ein.Sieht gut aus. Setzen Sie das Skript fort.
quelle
Die Standardmethode zum Debuggen von Skripten in den meisten Bourne-basierten Shells, wie z. B. Bash, ist das Schreiben
set -x
am oberen Rand Ihres Skripts. Dies macht bash ausführlicher darüber, was getan / ausgeführt wird und wie Argumente ausgewertet werden.Dies ist entweder für den Interpreter oder für interne Skripte nützlich. Zum Beispiel:
Oben sehen wir, warum der Suchvorgang aufgrund einzelner Anführungszeichen fehlschlägt.
Um die Funktion zu deaktivieren, geben Sie einfach ein
set +x
.quelle
Eclipse verwenden
Sie können die kombinierte Umgebung von Eclipse und Shelled mit dem unten verlinkten Skript "_DEBUG.sh" verwenden.
http://sourceforge.net/projects/shelled/files/shelled/update/
http://sourceforge.net/projects/basheclipse/
Muscheln wechseln
Standardmäßig wird das Shelled-Entwicklungstool
/bin/dash
als Interpreter verwendet. Ich habe dies geändert,/bin/bash
um eine bessere Kompatibilität mit den meisten Shell-Beispielen im Web und meiner Umgebung zu erreichen.HINWEIS: Sie können dies ändern, indem Sie zu Fenster -> Einstellungen -> Shell-Skript -> Interpreter wechseln
Setup-Anweisungen
Das Debugger-Paket enthält die folgenden Schritte, um das
_DEBUG.sh
Skript für das Debuggen von Skripten zu verwenden:Die Bash-Debug-Benutzeroberfläche
Dieser Bash-Debugger bietet alle Funktionen von Standard-Programmier-Debuggern wie:
Die Shelled- IDE (Integrated Development Environment, integrierte Entwicklungsumgebung) (Shell-Skript-Editor) bietet einen zusätzlichen Vorteil: Sie kann beim Schreiben des Skripts den Kontext überprüfen, hervorheben und einrücken. Wenn es nicht richtig eingerückt ist, können Sie möglicherweise sofort viele Fehler dort kennzeichnen / lokalisieren.
Dann gibt es andere IDE-Vorteile wie:
quelle
In den letzten Jahren ist eine wunderbare Ressource erschienen: http://shellcheck.net
Es zeigt Ihnen mehr als die reguläre Bash, so dass Sie mühselige, nicht geschlossene Anführungszeichen, geschweifte Klammern usw. leicht finden können.
Stellen Sie einfach sicher, dass Sie keine vertraulichen Informationen (IPS, Passwörter usw.) über das Internet einfügen. (Ich glaube, Shellcheck kann auch heruntergeladen werden, bin mir aber nicht sicher.)
quelle
benutze einfach:
das gleiche für shell:
quelle
Heutzutage gibt es das VS Code Bash Debug.
https://marketplace.visualstudio.com/items?itemName=rogalmic.bash-debug
Es hat 'Step in / out / over' und zeigt auch den Wert jeder Variablen.
quelle