Python scrive sempre più script per le attività amministrative sul sistema operativo Linux. Questo post mira a introdurre uno strumento per tracciare l'esecuzione delle istruzioni Python. Python è un linguaggio di programmazione dinamico orientato agli oggetti che può essere utilizzato per sviluppare vari tipi di software. Offre un forte supporto per l'integrazione con altri linguaggi e strumenti e viene fornito con ampie librerie standard. Nelle distribuzioni Linux, Python è ampiamente utilizzato per scrivere strumenti di amministrazione, come il pacchetto di configurazione della stampante, ecc.
Tracciare l'esecuzione delle istruzioni Python e registrare tutti i codici in esecuzione riga per riga è molto utile per individuare la causa di un problema in modo efficiente.
Fortunatamente, il pacchetto python viene fornito con uno strumento trace.py , che può essere utilizzato per soddisfare tali requisiti. trace.py risiede nella directory /user/lib/python2.x, dove python2.x è la versione python (es. python2.3 e python2.4 ecc.)
# rpm -ql python |grep trace.py /usr/lib/python2.3/trace.py /usr/lib/python2.3/trace.pyc /usr/lib/python2.3/trace.pyo
Ad esempio, per tracciare /usr/sbin/printconf-backend, il comando è il seguente:
# /usr/lib/python2.x/trace.py --trace /usr/sbin/printconf-backend
Mostrerà tutte le informazioni di debug e il codice sorgente dello script Python sulla console. Possiamo registrare tutto l'output come segue.
# script /tmp/printerconf.log # /usr/lib/python2.x/trace.py --trace /usr/sbin/printconf-backend # exit #
Quindi controlla /tmp/printerconf.log file.
Nota :Per impostazione predefinita trace.py non ha permessi di esecuzione. Quindi è necessario concedere il permesso di esecuzione prima di eseguire le istruzioni di cui sopra.Più opzioni di Trace.py
Usando l'opzione –help mostra le informazioni sull'utilizzo in dettaglio per trace.py. Ad esempio:
$ /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).