如何使用“ perl -d”在特定文件中设置断点

时间:2019-01-09 14:20:49

标签: perl debugging package

我使用以下命令调试程序。

perl -d -I“ ./Dev/lib/” -I“ ./TestCases/Dev/” ./Dev/bin/mytest.pl

我想使用'perl -d'调试mytest.pl,并且有很多* .pm文件。我想使用'f * .pm'加载此pm文件并在此pm文件中设置一个中断,但显示'没有文件匹配'。我给出了该pm文件的完整路径,并且该路径完全存在。

DB<4> f /automation_code/TestCases/Tests/Dev/testcase1.pm

No file matching '/automation_code/TestCases/Tests/Dev/testcase1.pm' is loaded.

但是如果我给出由./Dev/bin组成的路径,它将成功加载。

DB<2> f /automation_code/Dev/bin/../lib/Setup.pm



DB<3> f /automation_code/Dev/lib/Setup.pm

No file matching '/automation_code/Dev/lib/Setup.pm' is loaded.

2 个答案:

答案 0 :(得分:3)

您可以使用以下命令查看加载到程序中的所有文件

x values %INC

修改

调试器中的b命令具有几个选项。

  • b load *filename*在文件加载时中断
  • b compile *subname*在编译子例程时中断
  • b postpone *subname*将在当前不存在的子例程上放置一个断点。

答案 1 :(得分:1)

如果您的框架尝试模仿面向对象的方法,并且将perl文件用作软件包,则可以尝试以下选项:

DB<1> use <package_name_of_file>
DB<2> b <package_name_of_file>::sub_routine_where_you_want_to_break

b postponef <file_name>不在调试一个例程时,它对我有用,该例程将在以后的某个时间点加载。