De plus en plus de scripts pour les tâches administratives sur le système d'exploitation Linux sont écrits par Python. Cet article vise à présenter un outil pour tracer l'exécution des instructions Python. Python est un langage de programmation dynamique orienté objet qui peut être utilisé pour développer différents types de logiciels. Il offre un support solide pour l'intégration avec d'autres langages et outils et est livré avec des bibliothèques standard étendues. Dans les distributions Linux, Python est largement utilisé pour écrire des outils d'administration, tels que le package de configuration d'imprimante, etc.
Suivre l'exécution de l'instruction Python et enregistrer tous les codes d'exécution ligne par ligne est très utile pour localiser efficacement la cause d'un problème.
Heureusement, le package python est livré avec un outil trace.py , qui peut être utilisé pour répondre à ces exigences. Le trace.py réside dans le répertoire /user/lib/python2.x, où python2.x est la version de python (par exemple python2.3 et python2.4 etc..)
# rpm -ql python |grep trace.py /usr/lib/python2.3/trace.py /usr/lib/python2.3/trace.pyc /usr/lib/python2.3/trace.pyo
Par exemple, pour tracer /usr/sbin/printconf-backend, la commande est la suivante :
# /usr/lib/python2.x/trace.py --trace /usr/sbin/printconf-backend
Il affichera toutes les informations de débogage et le code source du script python sur la console. Nous pouvons enregistrer toutes les sorties comme suit.
# script /tmp/printerconf.log # /usr/lib/python2.x/trace.py --trace /usr/sbin/printconf-backend # exit #
Vérifiez ensuite le fichier /tmp/printerconf.log fichier.
Remarque :Par défaut, le trace.py n'a pas d'autorisation d'exécution. Il est donc nécessaire d'accorder l'autorisation d'exécution avant d'exécuter les instructions ci-dessus.Plus d'options de Trace.py
L'option –help affiche les informations d'utilisation en détail pour trace.py. Par exemple :
$ /usr/lib/python2.3/trace.py --help Usage: /usr/lib/python2.3/trace.py [OPTIONS][ARGS] Meta-options: --help Display this help then exit. --version Output version information then exit. Otherwise, exactly one of the following three options must be given: -t, --trace Print each line to sys.stdout before it is executed. -c, --count Count the number of times each line is executed and write the counts to .cover for each module executed, in the module's directory. See also `--coverdir', `--file', `--no-report' below. -l, --listfuncs Keep track of which functions are executed at least once and write the results to sys.stdout after the program exits. -r, --report Generate a report from a counts file; do not execute any code. `--file' must specify the results file to read, which must have been created in a previous run with `--count --file=FILE'. Modifiers: -f, --file= File to accumulate counts over several runs. -R, --no-report Do not generate the coverage report files. Useful if you want to accumulate over several runs. -C, --coverdir= Directory where the report files. The coverage report for . is written to file / / .cover. -m, --missing Annotate executable lines that were not executed with '>>>>>> '. -s, --summary Write a brief summary on stdout for each file. (Can only be used with --count or --report.) Filters, may be repeated multiple times: --ignore-module= Ignore the given module and its submodules (if it is a package). --ignore-dir= Ignore files in the given directory (multiple directories can be joined by os.pathsep).