我刚刚注意到在ipdb
中使用l
(即list
命令)时的奇怪行为。我想我以前在Perl调试器中见过类似的东西,但它仍然困扰着我。
第一次调用它时,在当前步骤(断点)周围正确显示了大约10行代码。但是,如果我反复按下它,它不再显示当前位置周围的代码,而是显示它下面的代码。
最终list
显示脚本的最后几行,如果我再次按l
,它不再显示任何内容。
为什么会这样,我如何让它在第一次调用时表现一致?
许多命令行调试器都是这样做的。(pdb, gdb, ipdb…).
如果要再次显示当前行,请指定行号。
l 42
如果不知道当前行号,执行where
命令
大多数调试器中的几个列表命令显示不同行的原因很简单,因为反复显示相同的源代码行没有多大意义。想必您可以回滚查看之前看到的内容。
也就是说,让我说,如果您愿意使用trepan调试器,它确实有能力显示您当前停止使用"list ."的相同源代码行。要查看最后一个列表之前的行,使用"list -"。
你也可以使用"set listsize"来设置默认列表的行数。
pdb中的这个命令总是显示调试器当前行周围的源文本
(pdb) l .