Python >> Tutoriel Python >  >> Python Tag >> exec()

python :Comment tracer l'ordre d'exécution d'une fonction dans un grand projet

tracer

Le module trace vous permet de tracer l'exécution du programme, de générer des listes de couverture d'instructions annotées, d'imprimer les relations appelant/appelant et de répertorier les fonctions exécutées pendant l'exécution d'un programme. Il peut être utilisé dans un autre programme ou depuis la ligne de commande.

python -m trace --count -C . somefile.py ...

Ce qui précède exécutera somefile.py et générer des listes annotées de tous les modules Python importés lors de l'exécution dans le répertoire courant.

PDB

Le module pdb définit un débogueur de code source interactif pour les programmes Python. Il prend en charge la définition de points d'arrêt (conditionnels) et le pas à pas au niveau de la ligne source, l'inspection des cadres de pile, la liste du code source et l'évaluation du code Python arbitraire dans le contexte de n'importe quel cadre de pile. Il prend également en charge le débogage post-mortem et peut être appelé sous le contrôle du programme.

Commande la plus couramment utilisée :

w(ici)

  • Imprimer une trace de pile, avec l'image la plus récente en bas. Une flèche indique le cadre actuel, qui détermine le contexte de la plupart des commandes.

d(propre)

  • Déplacer l'image actuelle d'un niveau vers le bas dans la trace de la pile (vers une image plus récente).

u(p)

  • Déplacer l'image actuelle d'un niveau vers le haut dans la trace de la pile (vers une image plus ancienne).

Vous pouvez également consulter cette question Conseils de débogage Python

Couverture

Coverage.py mesure la couverture du code, généralement pendant l'exécution du test. Il utilise les outils d'analyse de code et les crochets de traçage fournis dans la bibliothèque standard Python pour déterminer quelles lignes sont exécutables et lesquelles ont été exécutées.

Chasseur

Hunter est une boîte à outils de traçage de code flexible, non pas pour mesurer la couverture, mais pour le débogage, la journalisation, l'inspection et d'autres fins néfastes.

L'action par défaut consiste simplement à imprimer le code en cours d'exécution. Exemple :

import hunter
hunter.trace(module='posixpath')

import os
os.path.join('a', 'b')

Résultat en terminal :