Set routine tracer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | trace_max |
maximum number of calls reported per routine. Setting this to zero disables tracing. output unit used for printing the trace-messages |
||
integer, | intent(in) | :: | unit_nr |
maximum number of calls reported per routine. Setting this to zero disables tracing. output unit used for printing the trace-messages |
||
character(len=13), | intent(in) | :: | trace_str |
short info-string which is printed along with every message |
||
character(len=default_string_length), | intent(in), | optional, | DIMENSION(:) | :: | routine_names |
List of routine-names. If provided only these routines will be traced. If not present all routines will traced. |
SUBROUTINE timings_setup_tracing(trace_max, unit_nr, trace_str, routine_names)
!! Set routine tracer
INTEGER, INTENT(IN) :: trace_max, unit_nr
!! maximum number of calls reported per routine. Setting this to zero disables tracing.
!! output unit used for printing the trace-messages
CHARACTER(len=13), INTENT(IN) :: trace_str
!! short info-string which is printed along with every message
CHARACTER(len=default_string_length), &
DIMENSION(:), INTENT(IN), OPTIONAL :: routine_names
!! List of routine-names. If provided only these routines will be traced. If not present all routines will traced.
INTEGER :: i, routine_id
TYPE(routine_stat_type), POINTER :: r_stat
TYPE(timer_env_type), POINTER :: timer_env
timer_env => list_peek(timers_stack)
timer_env%trace_max = trace_max
timer_env%trace_unit = unit_nr
timer_env%trace_str = trace_str
timer_env%trace_all = .TRUE.
IF (.NOT. PRESENT(routine_names)) RETURN
! setup routine-specific tracing
timer_env%trace_all = .FALSE.
DO i = 1, SIZE(routine_names)
routine_id = routine_name2id(routine_names(i))
r_stat => list_get(timer_env%routine_stats, routine_id)
r_stat%trace = .TRUE.
END DO
END SUBROUTINE timings_setup_tracing