Débogage

From FreeCAD Documentation
Jump to navigation Jump to search
This page is a translated version of the page Debugging and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎hrvatski • ‎italiano • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎svenska • ‎čeština • ‎български • ‎русский • ‎中文 • ‎中文(中国大陆)‎ • ‎中文(台灣)‎
Arrow-left.svg Page précédente : Création de module
Page suivante : Atelier Test Arrow-right.svg

Premier test

Avant de passer à la douloureuse phase de débogage, utilisez l'Atelier test pour vérifier si les tests standards fonctionnent correctement. Si ce n'est pas le cas, c'est peut-être dû a une installation défectueuse.

Ligne de commande

Le débogage de FreeCAD est supporté par quelques mécanismes internes. La version en ligne de commande de FreeCAD fournit des options d'aide au débogage :

Ce sont les options actuellement reconnues par FreeCAD 0.15:

Options Génériques:

 -v [ --version ]      Affiche la version sous la forme d'une chaîne
 -h [ --help ]         Affiche un message d'aide
 -c [ --console ]      Démarre en mode console
 --response-file arg   Peut aussi être spécifié avec '@name'

Configuration:

 -l [ --write-log ]       Ecrit un fichier journal dans:
                          $HOME/.FreeCAD/FreeCAD.log
 --log-file arg           Contrairement à --write-log cela permet de se connecter à un
                          fichier arbitraire
 -u [ --user-cfg ] arg    Fichier de configuration utilisateur pour charger/enregistrer les paramètres utilisateur
 -s [ --system-cfg ] arg  fichier de configuration pour charger/enregistrer les paramètres du système
 -t [ --run-test ] arg    Niveau de test
 -M [ --module-path ] arg Chemin de module supplémentaire
 -P [ --python-path ] arg Autres chemins python

Générer un Backtrace

Si vous exécutez une version de FreeCAD à partir de l'extrémité saillante de la courbe de développement, il se peut qu'il se "bloque". Vous pouvez aider à résoudre ces problèmes en fournissant aux développeurs une "backtrace". Pour ce faire, vous devez exécuter une "version de débogage" du logiciel. "Debug build" est un paramètre qui est défini au moment de la compilation, donc vous devrez soit compiler vous-même FreeCAD, soit obtenir une version "debug" précompilée.

For Linux

Linux Debugging →

Prérequis:

  • logiciel gdb installé
  • une version de débogage de FreeCAD (à ce moment seulement disponible par Pour une compilation "Debug")
  • un modèle FreeCAD qui provoque un crash

Étapes: Entrez ce qui suit dans votre fenêtre de terminal:

$ cd FreeCAD/bin
$ gdb FreeCAD

GNUdebugger affichera des informations d’initialisation. Le (gdb) montre que GNUDebugger est en cours d’exécution dans le terminal, entrez maintenant:

(gdb) handle SIG33 noprint nostop
(gdb) run

FreeCAD va maintenant démarrer. Effectuez les étapes qui provoquent le crash ou le blocage de FreeCAD, puis entrez dans la fenêtre du terminal :

(gdb) bt

Cela va générer une longue liste de ce que le programme faisait quand il s'est planté ou gelé. Incluez ceci avec votre rapport de problème.

(gdb) bt full

Affiche également les valeurs des variables locales. Ceci peut être combiné avec un nombre pour limiter le nombre d'images affichées.

Pour MacOSX

MacOSX Debugging →

Prerequis:

  • logiciel lldb installé
  • une version de débogage de FreeCAD
  • un modèle FreeCAD qui provoque un crash

Étapes: Entrez ce qui suit dans la fenêtre de votre terminal:

$ cd FreeCAD/bin
$ lldb FreeCAD

LLDB générera des informations d’initialisation. Le (lldb) montre que le débogueur s'exécute dans le terminal, entrez maintenant:

(lldb) run

FreeCAD va maintenant démarrer. Effectuez les étapes qui provoquent le crash ou le blocage de FreeCAD, puis entrez dans la fenêtre du terminal:

(lldb) bt

Cela va générer une longue liste de ce que le programme faisait quand il s'est bloqué ou arrêté. Incluez ceci avec votre rapport de problème.

Liste des bibliothèques chargées par FreeCAD

(Applicable à Linux et MacOS)

Parfois, il est utile de comprendre quelles bibliothèques FreeCAD charge, en particulier s'il y a plusieurs bibliothèques en cours de chargement du même nom mais de versions différentes (collision de versions). Afin de voir quelles bibliothèques sont chargées par FreeCAD lorsqu'il se bloque, vous devez ouvrir un terminal et l'exécuter dans le débogueur. Dans une deuxième fenêtre de terminal, découvrez l'ID du processus de FreeCAD:

ps -A | grep FreeCAD

Utilisez l'ID retourné et transmettez-le à lsof:

lsof -p process_id

Cela affiche une longue liste de ressources chargées. Ainsi, par exemple, si vous essayez de vérifier si plusieurs versions de la bibliothèque Coin3d sont chargées, faites défiler la liste ou recherchez directement Coin dans la sortie:

lsof -p process_id | grep Coin

Débogage Python

Pour une approche plus moderne du débogage de Python, consultez les articles suivants :

winpdb

winpdb Debugging →

Voici un exemple d'usage de Winpdb dans FreeCAD :

Nous avons besoin du débogueur python : Winpdb. Si vous ne l'avez pas installé, vous pouvez le faire sous Ubuntu/Debian avec :

sudo apt-get install winpdb

Vous pouvez maintenant configurer le débogueur.

  1. Démarrez Winpdb.
  2. Définissez le mot de passe du débogueur sur "test" : Allez dans le menu "Fichier" → "Mot de passe" et définissez le mot de passe.

Nous allons maintenant exécuter étape par étape un script de test python dans FreeCAD.

  1. Lancez winpdb et définissez le mot de passe (par exemple, test)
  2. Créer un fichier Python avec ce contenu
import rpdb2
rpdb2.start_embedded_debugger("test")
import FreeCAD
import Part
import Draft
print "hello"
print "hello"
import Draft
points=[FreeCAD.Vector(-3.0,-1.0,0.0),FreeCAD.Vector(-2.0,0.0,0.0)]
Draft.makeWire(points,closed=False,face=False,support=None)
  1. Démarrer FreeCAD et charger le fichier ci-dessus dans FreeCAD
  2. Appuyez sur F6 pour l'exécuter
  3. Maintenant, FreeCAD ne répondra plus car le débogueur Python attend
  4. Passez à l'interface graphique de Windpdb et cliquez sur "Attacher". Après quelques secondes, un élément "<Input>" apparaît où vous devez double-cliquer
  5. Maintenant, le script actuellement exécuté apparaît dans Winpdb.
  6. Définir une pause à la dernière ligne et appuyez sur F5
  7. Maintenant, appuyez sur F7 pour entrer dans le code Python de Draft.makeWire

Code Visual Studio (VS Code)

VS Code Debugging →

Prerequis:

  • Le paquet ptvsd doit être installé
pip install ptvsd

Page pypi

Documentation du code Visual Studio pour debugging à distance

Étapes :

  • Ajoutez le code suivant au début de votre script
import ptvsd
print("Waiting for debugger attach")
# 5678 is the default attach port in the VS Code debug configurations
ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)
ptvsd.wait_for_attach()
  • Ajoutez une configuration de débogage dans le Code Visual Studio Debug → Add Configurations…. Cela devrait ressembler à ceci :
    "configurations": [
        {
            "name": "Python: Attacher",
            "type": "python",
            "request": "attach",
            "port": 5678,
            "host": "localhost",
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "."
                }
            ]
        },
  • Dans VS Code, ajoutez un point d'arrêt n'importe où.
  • Lancez le script dans FreeCAD. FreeCAD gèle en attente de la pièce jointe.
  • Dans VS Code, démarrez le débogage avec la configuration créée. Vous devriez voir les variables dans la zone du débogueur.
Arrow-left.svg Page précédente : Création de module
Page suivante : Atelier Test Arrow-right.svg