如何在Python PDB中列出当前行?

64
在perl调试器中,如果您重复列出代码段并使其远离当前行,您可以通过输入命令.(点号)返回到当前行。
我在Python的PDB模块中没有找到类似的功能。如果我将自己从当前行“列出”并想要再次查看它,似乎我必须记住当前执行的行号(对我来说不太可能),或者执行语句(通常是不希望的)。我是否漏掉了什么?
4个回答

53

虽然有些晚,不过希望仍能有所帮助。可以创建以下别名:

alias ll u;;d;;l

每当你输入 ll 时,pdb 会从当前位置开始列出代码。它通过向上和向下遍历栈来实现,这将重置 'l' 以从当前位置开始显示。(如果你在堆栈跟踪的顶部,则此方法不起作用。)

提示:永久别名

要使别名永久生效,请将该行添加到用户主目录 (~/.pdbrc) 中的 .pdbrc 文件中。这适用于 pdb 和 ipdb。


简单易用,对我很有效。应该将其标记为答案! - trinth
2
这个命令非常方便。为了节省时间,您可以将其添加到.pdbrc文件中,以便每次不必输入(在此处描述:https://docs.python.org/3/library/pdb.html#debugger-commands) - Cabbage soup
1
我无法执行以下操作来覆盖alias l => alias l u;;d;;l,这会导致进入循环。 - alper

47

1
谢谢,非常有帮助。+1 - Sabuncu
5
翻译自英文到中文:或者简写为“l.” - Kossak

32

这个问题现在已经有7年的历史了。

如果有人对这个问题感到好奇,只需使用点符号:

(pdb) l .

现在可以正常工作了。


2
*** Error in argument: '.' - alper

21

嗯,我认为perl调试器中没有类似于.的命令,但你总是可以使用where / w命令查找当前行。这将向您显示当前(上下文)帧以及最近的帧,我相信那是调试器触发的位置。


我没有想到使用“where”来返回。虽然不是最理想的方法,但肯定比没有强。谢谢! - zenzic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接