【发布时间】:2014-11-11 22:07:48
【问题描述】:
我一直在使用 perl 交互式调试器(基本上是perl -d script)
我有一个脚本,其中导入了很多模块,我需要调试一个问题。
我所做的是启动调试器并遍历线路,在必要时进入。
但这很乏味,因为我需要进入多行代码和函数调用。
问题:假设在检查完代码行之后,我最终进入了某个模块的函数A::B::C::foo(),我正在调试的问题出在哪里。
有没有办法在调试会话开始时在该函数中设置断点,以便我直接跳转到那里,而不是逐行遍历代码直到到达那里?
我知道我可以在我的调试器当前所在的同一个文件中添加一个断点,但是我如何在此时在调试器范围之外的行中添加一个断点(到一些任意文件/模块,最终调试器会有到达)?
注意:
澄清一下:A::B::C::foo() 并不在脚本的 X 行中。它最终在许多模块中许多其他函数的调用链
【问题讨论】:
-
@ThisSuitIsBlackNot:No.我的问题是我怀疑在我的流程中调用了哪个函数,但代码非常通用,我不确定,我不知道传递的参数代码相当复杂(至少对我而言)
-
你不需要知道传递给函数的参数,只需要知道函数名。
-
@ThisSuitIsBlackNot:但我需要使用有效值运行该函数才能弄清楚到底发生了什么。也许我错过了你的观点
-
我不明白您所说的“我需要使用有效值运行函数”是什么意思,但也许您只想在满足某个条件时才中断,您可以使用 @987654324 @,例如
b A::B::C::foo $x > 42.
标签: perl debugging module perl-module