GNU/Linux >> Linux Esercitazione >  >> Linux

Come tracciare gli script Python usando trace.py

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).


Linux
  1. Come eseguire script Python dalla shell

  2. Procedura:programmazione socket in Python

  3. Come creare un utente in Linux usando Python

  4. Come terminare il processo da Python usando pid?

  5. Come impostare Python3.8 predefinito sul mio Mac usando Homebrew?

Come creare un bucket S3 utilizzando Python Boto3 su AWS

Come tracciare l'esecuzione del programma utilizzando il comando Strace di Linux

Come gestire i pacchetti Python utilizzando PIP

Come configurare un file server di base utilizzando simpleHTTPserver

Come ridimensionare le immagini usando Python

Come configurare l'esecuzione automatica di uno script Python utilizzando Systemd