Bash
Debugging
Zoeken…
Een bash-script debuggen met "-x"
Gebruik "-x" om foutopsporingsuitvoer van uitgevoerde regels in te schakelen. Het kan worden uitgevoerd op een volledige sessie of script, of programmatisch worden ingeschakeld binnen een script.
Voer een script uit met debug-uitvoer ingeschakeld:
$ bash -x myscript.sh
Of
$ bash --debug myscript.sh
Schakel foutopsporing in een bash-script in. Het kan optioneel weer worden ingeschakeld, hoewel de foutopsporingsuitvoer automatisch wordt gereset wanneer het script wordt afgesloten.
#!/bin/bash
set -x # Enable debugging
# some code here
set +x # Disable debugging output.
De syntaxis van een script controleren met "-n"
Met de vlag -n kunt u de syntaxis van een script controleren zonder het uit te voeren:
~> $ bash -n testscript.sh
testscript.sh: line 128: unexpected EOF while looking for matching `"'
testscript.sh: line 130: syntax error: unexpected end of file
Debuggen usigh bashdb
Bashdb is een hulpprogramma dat vergelijkbaar is met gdb, omdat je dingen kunt doen zoals breekpunten instellen op een regel of een functie, inhoud van variabelen afdrukken, scriptuitvoering opnieuw starten en meer.
Je kunt het normaal gesproken installeren via je pakketmanager, bijvoorbeeld op Fedora:
sudo dnf install bashdb
Of download het vanaf de startpagina . Vervolgens kunt u het uitvoeren met uw script als parameter:
bashdb <YOUR SCRIPT>
Hier zijn een paar opdrachten om u op weg te helpen:
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
Voor meer informatie raad ik aan de handleiding te raadplegen: http://www.rodericksmith.plus.com/outlines/manuals/bashdbOutline.html
Zie ook homepage:
http://bashdb.sourceforge.net/