我一直在使用perl交互式调试器(基本上是perl -d script
)
我有一个脚本,导入了相当多的模块,我需要调试问题
我所做的是启动调试器并重新排队,进入必要的地方
但这很乏味,因为我需要进入多行代码和函数调用。
问题:让我们说在经过代码行之后,我最终会进入某个模块的函数A::B::C::foo()
,这就是我正在调试的问题。
有没有办法在调试会话开始时在该函数中设置一个断点,这样我就可以直接跳到那里而不是逐行遍历代码直到我到达那里?
我知道我可以在我的调试器当前的同一文件中添加一个断点但是如何在此时在调试器范围之外的行中添加一个断点(最终到某个任意文件/模块)调试器会达到)?
注意:
只是为了澄清:它不像A::B::C::foo()
在脚本的第X行。在很多模块中执行许多其他函数的调用链后,最终被调用
答案 0 :(得分:7)
您可以使用记录的b sub
语法将断点设置为子例程。在这种情况下,只需使用
b A::B::C::foo
c
答案 1 :(得分:3)
您可以通过定义文件名然后定义行号来设置断点
b YourModule.pm:line_number
其中行号位于您想要中断的模块函数内。
答案 2 :(得分:2)
您甚至可以使用postpone
选项在尚未加载/定义的子上放置断点:
b postpone Name::Of::Sub::Yet::To::Be::Created