Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Prevent a specific function from being xtrace'd



Hello all!

~~ TL; DR ~~
Is there any way to mark or annotate a function such that its internals should not be traced, even if "set -x" or "zsh -x" is used?

~~ Research ~~
I've got a handful of functions that get loaded into each script via "source" or (more frequently) "autoload".

In order for the contents of these functions to not pollute the xtrace output, I set the first line of each function to do "set +x" which prevents further tracing.  However, the "set +x" itself shows up in the xtrace.

Chapter 9 (functions) doesn't mention anything about tracing at all.

Chapter 16 (options) mentions a few related things, notably SOURCE_TRACE, VERBOSE, and XTRACE, but doesn't have anything like that.

Chapter 17 (builtins) discusses the "functions" builtin and some of the options that are available to it.  None of these look relevant.

~~ Misc Notes ~~
I've created a small script[1] that somewhat achieves this effect, with TRAPDEBUG and ZSH_DEBUG_COMMAND -- using funcfiletrace to simply not print any of the lines that come from the file that contains the do-not-want-traced functions -- but I expect there is something simpler.  It's similar to xtrace / verbose, but only prints the first line of each statement executed.


Zach Riggle



Messages sorted by: Reverse Date, Date, Thread, Author