我正在通过其他人的代码来查找在某个特定的,不可测试的情况下破坏我的代码(不要问我为什么测试框架会给出不同的实际使用结果,这就是我想要弄清楚的)情况。每次我在崩溃之前进一步深入代码时,有没有什么办法可以在不修改源代码的情况下设置断点?所以我没有下一步,下一步,下一步,下一次,每一次?或每次修改源。还要考虑到我必须逐步浏览多个文件,因为这些程序广泛使用了库,并且bug本身似乎位于其中一个库中。所以例如我知道我需要继续执行,直到我达到文件的行号。这些库也在加载库,我检查的最后一个库至少有3-5个库。
注意:我是一般的调试人员
答案 0 :(得分:6)
听起来您需要交互式Perl调试器中的b
命令,该命令可用于设置将来的断点。或者也许是c
命令,如果给出一个参数,它就像GDB的until
一样。
每次使用.perldb
中的afterinit
启动调试器时,您也可以自动设置某些断点。或者使用R
命令重启调试器(以及正在调试的程序),同时保留断点和其他信息。
答案 1 :(得分:3)
您可以结合使用 b 命令, f 命令,%INC 的内容以及 c 命令快速浏览代码。
c 可让您继续执行,直至到达指定的行。这使您可以轻松地跳转到任意点。
如果您想在模块中的某个特定位置中断,请在%INC 中查看该模块的条目(该键将为'Some / Module.pm'如果模块是 Some :: Module )。该键的值是从中加载模块的文件。如果尚未加载模块,您可以在调试器的命令提示符下使用,然后查看%INC 。
如果您的文件包含要设置断点的代码,请执行 f filename 以切换调试器的 l (列表)和文本搜索命令( / 和? - 分别向前和向后)查看该文件,然后设置所需的断点, c 即可到达。< / p>