zsh: 명령 실행 중에 호출된 모든 함수와 명령 및 해당 확장 별칭을 추적할 수 있습니까?

zsh: 명령 실행 중에 호출된 모든 함수와 명령 및 해당 확장 별칭을 추적할 수 있습니까?

나는 다음과 같은 것을 원합니다 :

# source:
a() b mp3 m4a "$@"
b() eval "${1}-to-${2} $@:q"
alias mp3-to-m4a='ffmpeg ...'
# 
$ traceall a a.mp3 a.m4a
 # should return:
 Functions:
 a
 b
 Aliases:
 mp3-to-m4a
 commands:
 ffmpeg

답변1

trap의사 신호로 볼 수 있습니다 DEBUG. 그러나 이는 별칭 확장 이후에만 명령과 기능을 트리거합니다. 자세한 내용은 zsh 매뉴얼을 읽어야 합니다. 명령이나 기능을 실행하여 실행될 내용에 대한 정보를 제공하므로 정보를 직접 기록하는 대신 전체 디버거를 구현하는 데 사용할 수 있다고 가정할 수 있습니다.

답변2

xtrace를 전역적으로 활성화합니다.

> set -x; a a.mp3 a.m4 ; set +x

또는 해당 함수에 대해 xtrace를 켜고 실행합니다.

> typeset -tf a   # turns on xtrace for function a and below
> a a.mp3 a.m4

> typeset -Tf a   # turns on xtrace for function a only
> a a.mp3 a.m4

관련 정보