# APSK Bash Debugging Tools
by Apollia - [http://apollia.com/](http://apollia.com/)
04:02:11 09/11/2020. Currently, the most important thing here is the APSK Bash Debugging Library, which helps with debugging Bash programs.
It contains various handy functions which do things like backtrace, forthtrace, printing strings or arrays with the source location automatically displayed above what you printed, and announcing entrances to and exits from a function.
With most of the functions that are intended for developer use, you can control whether they get run or not by providing a tag argument, and/or by changing the config vars and arrays.
Also, you can make it so debug functions only get run if they're called from a particular function or set of functions that you're curious about. (However, tag includes or excludes take precedence over function includes or excludes.)
2020-12-08 01:14:22. List of all functions especially intended for developer use:
backtrace (or bt)
forthtrace (or ft)
techo (or tagged_echo)
teval (or tagged_eval)
Doesn't have the tag feature, nor a source location header:
<p><br>2020-12-08 02:06:17. Please be extra-cautious with these 5 functions, because they all use the "eval" command:
teval (or tagged_eval)
<p><br>03:38:17 09/11/2020. The APSK Bash Debugging Library is meant to be sourced by whatever Bash program you want to debug.
But, it noticeably slows things down, so you should probably unsource it whenever you're done debugging.
Then, instead, you can source the stubs version of the APSK Bash Debugging Library, which makes it so you won't have to delete or comment out all your calls to APSK debugging functions just to avoid errors about missing functions.
<p><br>04:10:03 09/11/2020. Other useful tools for debugging Bash programs:
[APSK Test Harness](https://apollia.org/gitlist/APSK-Test-Harness.git)
Another sourceable Bash library. When you run your program, it gets paused at whichever lines run the apsk_test_harness function, which gives you a command prompt at which you can run whatever Bash commands you want. When you're done, press the Esc key to dismiss your current APSK Test Harness prompt and unpause your program.
bash_unit isn't by me, but I keep a slightly modified version on my website, and I sometimes include tests runnable by bash_unit in my Bash program repos.
The official bash_unit repo: [https://github.com/pgrange/bash_unit](https://github.com/pgrange/bash_unit)
* The GNU Affero General Public License 3.0: