Print current routine stack
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | unit_nr |
SUBROUTINE print_stack(unit_nr) !! Print current routine stack INTEGER, INTENT(IN) :: unit_nr INTEGER :: i TYPE(callstack_entry_type) :: cs_entry TYPE(routine_stat_type), POINTER :: r_stat TYPE(timer_env_type), POINTER :: timer_env ! catch edge cases where timer_env is not yet/anymore available IF (.NOT. list_isready(timers_stack)) & RETURN IF (list_size(timers_stack) == 0) & RETURN timer_env => list_peek(timers_stack) WRITE (unit_nr, '(/,A,/)') " ===== Routine Calling Stack ===== " DO i = list_size(timer_env%callstack), 1, -1 cs_entry = list_get(timer_env%callstack, i) r_stat => list_get(timer_env%routine_stats, cs_entry%routine_id) WRITE (unit_nr, '(T10,I4,1X,A)') i, TRIM(r_stat%routineN) END DO CALL m_flush(unit_nr) END SUBROUTINE print_stack