2009-09-23 8 views

Répondre

5

La commande de débogueur b method définit un point d'arrêt au début de votre sous-programme.

DB<1> b foo 
    DB<2> &foo(12) 
main::foo(foo.pl:2):  my ($x) = @_; 
    DB<<3>> s 
main::foo(foo.pl:3):  $x += 3; 
    DB<<3>> s 
main::foo(foo.pl:4):  print "x = $x\n"; 
    DB<<3>> _ 

Parfois, vous devrez peut-être qualifier les noms de sous-programmes avec un nom de paquet.

DB<1> use MyModule 
    DB<2> b MyModule::MySubroutine 
2

juste faire: func_name (args)

par exemple

sub foo { 
    my $arg = shift; 
    print "hello $arg\n"; 
} 

En perl -d:

DB<1> foo('tom') 
hello tom 
+0

Comment cela vous aide-t-il à parcourir le sous-programme? – mob

0

En réponse à la modifier en ce qui concerne vouloir re étape à travers un sous-programme.

Ce n'est pas tout à fait la manière la plus élégante de le faire, mais je n'ai pas une autre méthode du haut de ma tête et je suis intéressé par les réponses des autres à cette question:

my $stop_foo = 0; 

while(not $stop_foo) { 
    foo(); 
} 

sub foo { 
    my $a = 1 + 1; 
} 

Le débogueur exécutera continuellement foo, mais vous pouvez arrêter la prochaine boucle en exécutant '$ stop_foo ++' dans le débogueur. Encore une fois, je n'ai pas vraiment l'impression que c'est la meilleure solution, mais le travail est fait avec des ajouts mineurs au code débogué.

Questions connexes