Szukaj…


Debugowanie skryptu bash za pomocą „-x”

Użyj „-x”, aby włączyć wyjście debugowania wykonanych linii. Można go uruchomić dla całej sesji lub skryptu lub włączyć programowo w skrypcie.

Uruchom skrypt z włączonym wyjściem debugowania:

$ bash -x myscript.sh

Lub

$ bash --debug myscript.sh

Włącz debugowanie w skrypcie bash. Opcjonalnie można go ponownie włączyć, chociaż wyjście debugowania jest automatycznie resetowane po zakończeniu skryptu.

#!/bin/bash
set -x   # Enable debugging
# some code here
set +x   # Disable debugging output. 

Sprawdzanie składni skryptu za pomocą „-n”

Flaga -n umożliwia sprawdzenie składni skryptu bez konieczności jego wykonywania:

~> $ bash -n testscript.sh
testscript.sh: line 128: unexpected EOF while looking for matching `"'
testscript.sh: line 130: syntax error: unexpected end of file

Debugowanie usigh bashdb

Bashdb to narzędzie podobne do gdb, w którym możesz robić rzeczy takie jak ustawianie punktów przerwania w linii lub funkcji, drukować zawartość zmiennych, możesz ponownie uruchomić wykonywanie skryptu i więcej.

Zwykle możesz go zainstalować za pomocą menedżera pakietów, na przykład w Fedorze:

sudo dnf install bashdb 

Lub pobierz go ze strony głównej . Następnie możesz uruchomić go ze skryptem jako parametr:

bashdb <YOUR SCRIPT>

Oto kilka poleceń na początek:

l - show local lines, press l again to scroll down
s - step to next line 
print $VAR - echo out content of variable 
restart - reruns bashscript, it re-loads it prior to execution.
eval - evaluate some custom command, ex: eval echo hi

b <line num> set breakpoint on some line 
c - continue till some breakpoint 
i b - info on break points 
d <line #> - delete breakpoint at line #

shell - launch a sub-shell in the middle of execution, this is handy for manipulating variables

Aby uzyskać więcej informacji, zalecamy zapoznanie się z instrukcją: http://www.rodericksmith.plus.com/outlines/manuals/bashdbOutline.html

Zobacz także stronę główną:
http://bashdb.sourceforge.net/



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow