Calls to Qiq_enter or Qiq_exit are made by the standard functions in Dashboard Studio and the execution stack is maintained when the functions start and end. Custom functions that users write are easier to maintain if the same technique is adopted.
The low-level trace adds a small and unnoticable overhead to each function call. The constant low-level tracing enables valuable information to be accessible should a problem arise.
The execution stack is implemented as an array. Whenever a function is called, an entry is added to the array to indicate that the function is active. Whenever code execution returns from a function, the last entry in the array is discarded. If the execution terminates abnormally, the stack shows the function where the error occurred and what other functions were called in the process.