2010-08-17 2 views
4

perl -d ...으로 스크립트를 디버깅하려고합니다. 내가 원하는 곳에서 휴식을 취한 후에, 더 높은 프레임에서 현재의 환경과 환경을 프린트하고 싶습니다.현재 및 상위 프레임의 변수 나열

T을 통해 스택이 표시됩니다. 이제 V을 시도하면 SO_BROADCAST 상수 등의 내용이 포함되어 있기 때문에 모든 항목의 목록을 얻을 수 있습니다. 어떻게 그 항목을 필터링하고 로컬 항목 만 가져올 수 있습니까?

더 높은 프레임에 대해 어떻게합니까?

더 높은 스택 프레임의 라인 주위에 코드를 인쇄하려면 어떻게해야합니까? v/l은 현재의 작업 만 수행합니다.

답변

1

level으로 지정된 어휘 (my) 변수를 현재 또는 상위로 표시하는 y [level]을 시도해 보셨습니까?

"물론 지역 용으로 만 사용하는 것"이 ​​제공됩니다.

+0

'level'은 무엇입니까? 스택 프레임 번호와 같은가요? 어느쪽에 번호가 매겨 졌습니까? – viraptor

+0

caller() 인터페이스와 유사하게, 0 = 현재 프레임, 1 = 위 등. – Grrrr

+0

"y"명령을 사용하면 Eric Strom의 답변에 따라 PadWalker를 설치해야한다고 들었습니다. –

1

PadWalker 모듈을 사용하여 지정된 범위에서 어휘 목록을 제공 할 수도 있습니다. peek_mypeek_our 함수는 상대 콜 프레임 (0 - 현재 프레임, 1 - 호출 프레임, ...)에서 범위의 변수 해시를 반환합니다.