How to debug/trace bash function?
Solution 1
Just add these line before section you want to debug.
set -v -x -e
and to disable it.
set +v +x +e
Solution 2
enable debugging in your script and output debugging for functions with functrace
.
set -x
set -o functrace
Solution 3
You should also in Bash be able to use:
$ set -xT
which enables function trace and
$ set +xT
to disable.
Also, with reference to another posted answer, I don't recommend using -v for debugging (verbose mode) unless you are checking a script/set of shell commands for syntax. One other (general) solution that is sometimes useful is making use of the -n
option in conjunction with -x
. This will "run" a script/commands without actually doing the last step of running a command. This can often let you pick up difficult errors in shell expansions and the like without causing unwanted mayhem.
Dims
Software developer & Machine Learning engineer C/C++/Java/C#/Python/Mathematica/MATLAB/Kotlin/R/PHP/JavaScript/SQL/HTML/ LinkedIn: http://www.linkedin.com/in/dimskraft Telegram: https://t.me/dims12 I prefer fishing rod over fish.
Updated on September 18, 2022Comments
-
Dims over 1 year
I have a bash script
myscript.sh
, which has a bunch of functions inside. To run one function, I would writesource myscript.sh; myfunction
How debug such a function?
-
Mark Plotnick almost 5 yearsRelated: How to debug a bash script
-