2010-08-17 43 views
4

我试图用perl -d ...来调试脚本。在我想要打破的地方之后,我想从较高的帧中打印出当前的环境和环境。在当前帧和更高帧中列出变量

我看到堆栈通过T。现在,如果我尝试V,我会得到一个一切的列表,这几乎是没用的,因为它包含诸如SO_BROADCAST常量等东西。我如何过滤掉并获取本地列表?

我该怎么做更高的帧?

此外,我如何打印围绕更高堆栈框架的代码? v/l只做目前的一个。

回答

1

您是否试过y [level],它显示当前或更高(由level指定)的词法(my)变量?

前提是这就是“只获取本地人”的意思,当然。

+0

但是什么是“level”?它是否与堆栈帧号相同?他们编号的方式是? – viraptor 2010-08-17 11:09:24

+0

通过类似于调用者()接口,0 =当前帧,1 =上面的那个,等等。 – Grrrr 2010-08-17 11:45:12

+0

当我尝试“y”命令时,我被告知我必须安装PadWalker,根据Eric Strom的答案。 – 2014-01-10 02:47:55

1

您还可以使用PadWalker模块为您提供给定范围的词汇列表。 peek_mypeek_our函数在相对调用帧(0-当前帧,1-调用帧,...)返回范围内变量的hashref。