7
votes

Comment rompez-vous une ligne spécifique d'un fichier requis dans le débogueur Perl?

J'ai un script Perl, appelons-le a.pl code> où les deux premières lignes ressemblent à ceci comme suit:

b C.pl:830


1 commentaires

Je n'ai jamais pu comprendre cela. Aller accepter la réponse prospère juste pour que cette question ne soit pas laissée sans réponse.


4 Réponses :


1
votes

Vous ne pouvez pas le faire en une étape, mais vous pouvez passer au fichier que vous souhaitez, puis définir un point d'arrêt sur une ligne spécifique:

DB<1> f C.pl
1    #!perl -w
2    # This is C.pl
3    # ...

DB<2> b 830

DB<3> c


3 commentaires

F ne semble pas fonctionner avec Exiger dit que le fichier n'est pas chargé.


Vous devez charger un fichier avant de pouvoir définir un point d'arrêt à l'intérieur, bien que vous puissiez faire B Charger pour casser le chargement d'un fichier.


Quand je fais ça, ça ne casse jamais du tout.



0
votes

Que diriez-vous d'utiliser la commande C pour passer au-delà du Exiger S, puis définissez un point d'arrêt. Par exemple xxx


3 commentaires

Après avoir entré dans le deuxième fichier, essayez de définir un point d'arrêt sur la ligne, cela me dit que cette ligne n'est pas cassable.


@Morinar: Vous ne pouvez définir que des points d'arrêt sur des lignes exécutables. Pour des déclarations multilignes qui signifie généralement la première ligne de l'expression.


La ligne que j'essaie de définir un point d'arrêt est une ligne unique si instruction. Je n'arrive pas à définir un point d'arrêt sur aucune ligne de ce fichier. Quelque chose ne va pas ici, mais je ne peux pas sembler comprendre quoi.



2
votes

Vous pouvez également modifier c.pl ajoute ceci:

$DB::single = 1;


1 commentaires

Cela devrait être $ dB :: simple = 1; Le seul point unique Il y a une syntaxe incorrecte pour répondre à cette variable.



2
votes

Je préfère le truc bon marché de la commande 'R' (redémarrer) du débogueur. Voici un exemple de programme:

  DB<6> c
LWP::UserAgent::new(/Users/joemcmahon/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/LWP/UserAgent.pm:23):
23:     Carp::croak("Options to LWP::UserAgent should be key/value pairs, not hash reference") 
24:         if ref($_[1]) eq 'HASH'; 
  DB<6> 


0 commentaires