Yes, yet 'set -x' in Bash is more useful than in any other languages I know.
Because Bash is used to call utils so you see the partial trace of your script that you want to see, not the inside of the tools/utils that you don't want to see.
In contrast in gdb for C++ you 'step' inside the STL implementation that most of the time you don't care about..