Wie kann ich die Bash-Funktion debuggen/verfolgen?

Wie kann ich die Bash-Funktion debuggen/verfolgen?

Ich habe ein Bash-Skript myscript.sh, das eine Reihe von Funktionen enthält. Um eine Funktion auszuführen, würde ich schreiben

source myscript.sh; myfunction

Wie debuggen Sie eine solche Funktion?

Antwort1

Fügen Sie diese Zeile einfach vor dem Abschnitt hinzu, den Sie debuggen möchten.

set -v -x -e

und es zu deaktivieren.

set +v +x +e

Antwort2

Aktivieren Sie das Debuggen in Ihrem Skript und geben Sie das Debuggen für Funktionen mit aus functrace.

set -x
set -o functrace

Antwort3

Sie sollten in Bash auch Folgendes verwenden können:

$ set -xT

das die Funktionsverfolgung ermöglicht und

$ set +xT

Etwas deaktivieren.

Außerdem empfehle ich in Bezug auf eine andere gepostete Antwort nicht, -v zum Debuggen (ausführlicher Modus) zu verwenden, es sei denn, Sie überprüfen die Syntax eines Skripts/einer Reihe von Shell-Befehlen. Eine andere (allgemeine) Lösung, die manchmal nützlich ist, ist die Verwendung der -nOption in Verbindung mit -x. Dadurch wird ein Skript/Befehl „ausgeführt“, ohne dass der letzte Schritt der Ausführung eines Befehls tatsächlich ausgeführt wird. Dadurch können Sie oft schwierige Fehler in Shell-Erweiterungen und dergleichen erkennen, ohne unerwünschtes Chaos zu verursachen.

verwandte Informationen