The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Devel::TraceLoad - Trace les chargements de programmes Perl

SYNOPSIS

    # with perldb
    perl -d:TraceLoad script.pl

    # without perldb
    perl -MDevel::TraceLoad script.pl

    # without perldb and with options
    perl -MDevel::TraceLoad=after,path script.pl

    # with perldb and options
    perl -d:TraceLoad -MDevel::TraceLoad=stop,after,path script.pl

DESCRIPTION

Le module Devel::TraceLoad trace les require() et les use() figurant dans un programme. La trace permet de connaître les dépendances d'un programme vis-à-vis d'autres programmes et en particulier des modules.

Le rapport généré peut être obtenu sous différentes formes. Les chargements sont indiqués dans l'ordre dans lesquels ils sont effectués. La trace peut être obtenue soit au cours de l'exécution des chargements ou à l'issue de l'exécution. Par défaut, la trace est générée lors de l'exécution et les imbrications de chargements sont marqués par des renfoncements. Tous les require() sont indiqués, même s'il s'agit d'un require() d'un programme déjà chargé. Un + indique que le programme est chargé pour la première fois. Un . indique que le programme a déjà été chargé.

Lorsque la trace est différée, le numéro de version des modules est indiqué. Une trace différée peut être triée et si on le souhaite les noms des modules peuvent être remplacés par le nom absolu des fichiers.

Le module est voisin de Devel::Modlist mais utilise une redéfinition de require() au lieu d'exploiter %INC. Dans une volonté d'homogénéité le module emprunte également de nombreuses choses à Devel::Modlist.

UTILISATION

Devel::TraceLoad peut s'utiliser avec ou sans perldb :

    perl -d:TraceLoad script.pl

    perl -MDevel::TraceLoad script.pl

Pour la plupart des utilisations les deux possibilités sont équivalentes.

OPTIONS

Pour passer des options au module Devel::TraceLoad on écrira :

    perl -MDevel::TraceLoad=option1[,option2,...]

Avec cette écriture l'option stop n'est pas prise en compte. Pour que stop soit prise en compte on écrira :

    perl -d:TraceLoad -MDevel::TraceLoad=option1[,option2,...]
after

La trace est donnée à l'issue de l'exécution.

flat

Supprime les renfoncements qui indiquent les emboîtements de require().

noversion

Supprime l'indication de version des modules requis.

path

Indique les noms absolus des fichiers correspondant aux modules chargés en lieu et place des noms de modules.

Cette option ne fonctionne que lorsque la trace est produite à l'issue de l'exécution, c'est-à-dire en présence de l'option after.

sort

La trace est fournie à l'issue de l'exécution et donne une liste triée alphabétiquement sur les noms de module ou les chemins.

stdout

Redirige la trace vers STDOUT. Par défaut la trace est redirigée vers STDERR.

stop

Arrête le programme avant que la première du programme ne soit exécutée si l'exécution à lieu avec perldb. Ne permet pas de voir les chargements effectués par les require() et les chargements qui se trouvent dans un eval().

try

Si l'exécution échoue avec le message Can't locate Bar.pm in @INC ... et que vous êtes sûr de votre code, utilisez l'option try. Cette option active une heuristique pour compenser le fait qu'il n'est pas possible de savoir si l'argument d'un c<require()> est placé entre guillemets ou non (est-ce que je me trompe ?). Pour essayer de le déterminer nous utilisons une heuristique qui consiste, entre autre, à considérer que l'argument est placé entre guillemets s'il n'est pas suffixé par ".pl" ou ".pm".

BUG

Certains modules et pragmas sont chargés du fait de la présence de -MDevel::TraceLoad. Ces modules ne figurent pas dans la trace (avec la version de Perl sur laquelle nous avons fait nos tests les modules concernés sont Exporter.pm Carp.pm vars.pm warnings::register.pm Devel::TraceLoad.pm warnings.pm).

AUTHOR

Philippe Verdret <pverdret@dalet.com>, sur la base d'une idée de Joshua Pritikin <vishnu@pobox.com>.

La version anglaise de la documentation est produite à partir d'un traduction automatique effectuée par babel.altavista.com.

VOIR EGALEMENT

Devel::Modlist.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 22:

Non-ASCII character seen before =encoding in 'connaître'. Assuming CP1252