1. 进入debug模式
# perl -d ./perl_debugger.pl
it prompts,
DB<1>
 
2. 查看从第10行开始的代码。 查看函数get_pattern的代码
DB<1> l 10
10: my $pattern;
DB<2> l get_pattern
11 {
12:    my $pattern;
13:    print “Enter search string: “;
14:    chomp ($pattern = );
15:    return $pattern;
16 }
 
3. 在函数find_files上设置断点
DB<3> b find_files
 
4. 在指定的44行设置断点
DB<4> b 44
 
5. 查看所有的断点
DB<5> L
./perl_debugger.pl:
22:    my $pattern = shift;
break if (1)
44:    print join “\n”,@list;
break if (1)
 
6. 单步调试,s 进入调用函数,n直接下一语句不进入调用函数
DB<5> s
main::(./perl_debugger.pl:39):    $pattern = get_pattern();
DB<5> s
main::get_pattern(./perl_debugger.pl:12):
12:    my $pattern;
Option s and n does step by step execution of each statements. Option s steps into the subroutine. Option n executes the subroutine in a single step (stepping over it).
The s option does stepping into the subroutine but while n option which would execute the subroutine(stepping over it).
 
7. 继续直到下一个断点
DB<5> c
Enter search string: perl
main::find_files(./perl_debugger.pl:22):
22:    my $pattern = shift;
 
8. 继续直到指定的行
DB<5> c 36
main::find_files(./perl_debugger.pl:36):
36:    return @list;
 
9. 打印变量的值
DB<6> p $pattern
perl
DB<7> c
main::(./perl_debugger.pl:44):    print join “\n”,@list;
DB<7> c
./perl_debugger.pl
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
After the last continue operation, the output gets printed on the stdout as “./perl_debugger.pl” since it matches the pattern “perl”.
 
10. 从文件获得debug的命令和断点信息
Perl debugger can get the debug command from the file and execute it. For example, create the file called “debug_cmds” with the perl debug commands as,
c
p $pattern
q
Note that R is used to restart the operation(no need quit and start debugger again).
DB<7> R
DB<7> source debug_cmds
>> c
Enter search string: perl
./perl_debugger.pl
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
>> p $pattern
perl
>> q
 
perl debug命令的总结
Following options can be used once you enter the perl debugger.
h or h h – for help page
c – to continue down from current execution till the breakpoint otherwise till the subroutine name or line number,
p – to show the values of variables,
b – to place the breakpoints,
L – to see the breakpoints set,
d – to delete the breakpoints,
s – to step into the next line execution.
n – to step over the next line execution, so if next line is subroutine call, it would execute subroutine but not descend into it for inspection.
source file – to take the debug commands from the file.
l subname – to see the execution statements available in a subroutine.
q – to quit from the debugger mode.
 
perl debug的高级用法
对调用的module中的函数设置断点:
b foo::bar::test::subname
 
可以设置永久的断点,在需要设置断点的行,加入:
$DB::single =1;
 
设置断点到调用的文件中的函数或行:
b  line_number file_path_name
b  function_name file_path_name
b file_path_name:function_name
 
f file_path_name
b line_number or function_name
 
监视变量的变化,当值被修改的时候,程序停下:
w $varialename

perl debug的更多相关文章

  1. Perl Debug error: SetConsoleMode failed, LastError=|6|

    Windows Strawberry Perl. 解决办法: 1. 设置环境变量 TERM = dumb 2. 重启 CMD 参考资料: http://padre.perlide.org/trac/t ...

  2. Perl的调试方法

    来源: http://my.oschina.net/alphajay/blog/52172 http://www.cnblogs.com/baiyanhuang/archive/2009/11/09/ ...

  3. C代码工具--自动生成enum值和名字映射代码

    这年头好像继续做C语言的人不多了,年轻人大多去互联网和移动应用.确实,那两个领域现在来钱快,且总是供不应求.就说刚刚在一个旧同事的微信群里,有人刚放出自己有团队可以做App几分钟,哇塞,好几个人说有项 ...

  4. jmeter sampler maven项目排错记

    eclipse 创建的maven项目,引入jar包之后出现红色叹号,一直找不到原因,连main方法都无法运行,提示找不到类: 错误: 找不到或无法加载主类 soapsampler.SoapSample ...

  5. Debug of bash , perl and python

    1.bash -x   script 2.perl -d  script 3. python -m pdb script n: execute the next line s: execute the ...

  6. Perl的debug小技巧

    进入Perl的调试环境的命令:  Perl  -d  perl_file 设置断点:b + perl代码中的行号. 执行到断点:c 表示continue until breakpoint. 执行下一条 ...

  7. How to DEBUG a trigger or procedure

    DEBUGGING STORED PROCEDURES Over the past several weeks, we’ve been working on debugging a stored pr ...

  8. perl小记

    perl是一种运行式脚本,所以在debug的时候,多用print,在后台看有没有输出相关的结果,来判断相应的错误. 部分perl正则表达式: $gene =~/^LOC/  以“LOC”开头的字符串 ...

  9. [转载]两个半小时学会Perl

    Learn Perl in about 2 hours 30 minutes By Sam Hughes Perl is a dynamic, dynamically-typed, high-leve ...

随机推荐

  1. Codeforces Round #Pi (Div. 2) C

    题意 : 给你一个序列,和 K ,选3 个数,下标严格递增, 满足 为递增的等比数列, 等比为K 思路 : 先统计所有数的个数,枚举等比数列的中间数 A, 计算 A 之后的 A*K的个数, A之前的 ...

  2. hdu 1542 线段树+扫描线 学习

    学习扫描线ing... 玄学的东西... 扫描线其实就是用一条假想的线去扫描一堆矩形,借以求出他们的面积或周长(这一篇是面积,下一篇是周长) 扫描线求面积的主要思想就是对一个二维的矩形的某一维上建立一 ...

  3. 怎样在win7 IIS中部署网站?

    IIS作为微软web服务器的平台,可以轻松的部署网站,让网站轻而易举的搭建成功,那么如何在IIS中部署一个网站呢,下面就跟小编一起学习一下吧. 第一步:发布IIS文件 1:发布你所要在IIS上部署的网 ...

  4. JavaScript实现抽象类与虚方法(六)

    一:什么是js抽象类与虚方法 虚函数是类成员中的概念,是只做了一个声明而未实现的方法,具有虚函数的类就称之为抽象类,这些虚函数在派生类中才被实现.抽象类是不能实例化的,因为其中的虚函数并不是一个完整的 ...

  5. 如何将自己的Image镜像Push到Docker Hub

    首先需要一个docker官方账号 这里我添加了一个AspNetCore程序 通过创建了一个镜像(前面提过使用Dockerfile处理了) docker build -t dockertest . 首先 ...

  6. Oracle分区表删除分区数据时导致索引失效解决

    https://blog.csdn.net/e_wsq/article/details/80896258

  7. POJ 1258 Agri-Net (Prim&Kruskal)

    题意:FJ想连接光纤在各个农场以便网络普及,现给出一些连接关系(给出邻接矩阵),从中选出部分边,使得整个图连通.求边的最小总花费. 思路:裸的最小生成树,本题为稠密图,Prim算法求最小生成树更优,复 ...

  8. Springboot实现filter拦截token验证和跨域

    背景 web验证授权合法的一般分为下面几种 使用session作为验证合法用户访问的验证方式 使用自己实现的token 使用OCA标准 在使用API接口授权验证时,token是自定义的方式实现起来不需 ...

  9. [转]硬盘的那些事(主分区、扩展分区、逻辑分区、活动分区、系统分区、启动分区、引导扇区、MBR等)

    http://xu3stones.blog.163.com/blog/static/205957136201210309424303 主分区,扩展分区,逻辑分区,活动分区,系统分区,启动分区..... ...

  10. asp.net core 微信扫码支付(扫码支付,H5支付,公众号支付,app支付)之1

    2018-08-13更新生成二维码的方法 在做微信支付前,首先要了解你需要什么方式的微信支付,目前本人做过的支付包含扫码支付.H5支付.公众号支付.App支付等,本人使用的是asp.net mvc c ...