Debugging/fr

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.19 :

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 également être spécifié avec '@name' --dump-config              Charge la configuration --get-config arg           Affiche la valeur de la clé de configuration demandée

Configuration : -l [ --write-log ]          Ecrit un fichier journal dans : $HOME/.FreeCAD/FreeCAD.log (Linux) $HOME/Library/Preferences/FreeCAD/FreeCAD.log (macOS) %APPDATA%\FreeCAD\FreeCAD.log (Windows) --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       Cas de test - ou 0 pour tous -M [ --module-path ] arg    Chemin de module supplémentaire -P [ --python-path ] arg    Autres chemins Python --single-instance           Autoriser à exécuter une seule instance de l'application

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.

Pour Linux
Linux Debugging →

Prérequis :


 * le package logiciel gdb installé
 * une version de débogage de FreeCAD (pour l'instant uniquement disponible par compilation à partir des sources)
 * un modèle FreeCAD qui provoque un crash.

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

Trouvez le binaire FreeCAD sur votre système :

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

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 :

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.

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

Pour macOS
macOS 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 :

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

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 :

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 :

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

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 :

Débogage Python
Pour une approche plus moderne du débogage de Python, consultez les articles suivants :
 * Debugging macros with VS 2017
 * Python workbenches debugging
 * python3.dll, Qt5Windgets.dll, Qt5Gui.dll and Qt5Core.dll not found

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 :

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


 * 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 "" 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é

Page pypi

Documentation du code Visual Studio pour debugging à distance

Étapes :
 * Ajoutez le code suivant au début de votre script


 * Ajoutez une configuration de débogage dans le Code Visual Studio . 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, lancez le débogage en utilisant la configuration créée. Vous devriez voir des variables dans la zone du débogueur.
 * Lors de la mise en place de points d'arrêt, VS Code se plaindra de ne pas trouver le fichier .py ouvert dans l'éditeur VS Code.
 * Changez "remoteRoot" : "." en "remoteRoot" : ""
 * Par exemple, si le fichier Python se trouve dans /home/FC_myscripts/myscript.py
 * Changez : "remoteRoot" : "/home/FC_myscripts"
 * Si votre macro ne trouve pas ptvsd alors que vous l'avez installé quelque part, faites précéder 'import ptvsd' par

où le chemin est celui du répertoire où ptvsd a été installé. Dans le package Mac, c'est /Applications/FreeCAD.App/Contents/Resources/bin/python.
 * Sur le bord inférieur gauche de VSCode, vous pouvez choisir l'exécutable Python - il est préférable de choisir la version fournie avec FreeCAD.

Vous pouvez le trouver sur votre système en tapant

dans la console Python de FreeCAD.

With LiClipse and AppImage
LiClipse Debugging →


 * Extract AppImage.


 * The sqashfs-root location is where the debugger later on is hooked up to.


 * Make sure you can start a fc session from within the squashfs-root location.


 * Should start up a freecad commandline session.


 * Install LiClipse.
 * Comes ready with pydev and has installers for all platforms.
 * For linux it is just to extract (to any location) and run.


 * Configure liclipse for debugging.
 * Right-click pydev icon (upper right corner) and choose customize.
 * Activate "PyDev Debug" (through checkbox, or it might be needed to go to tab "Action Set Availability" and activate there first).
 * In the pydev menu you can now choose "start debug server".
 * Use menu window/open perspective/other > debug.
 * Right-click debug icon (upper right corner) and choose customize.
 * Checking "Debug" brings the debugging navigation tools to the toolbar.
 * Open preferences through menu window/preferences.
 * In PyDev/Interpreters add "new Interpreter by browsing".
 * The added interpreter should be:.
 * If you are only using this for fc, you can add AddOn workbench folders as well, or do that in a pydev-project later on.


 * Find path to in your liclipse installation.
 * Something along the lines of:.
 * Create a regular pydev-project in liclipse.
 * Import external sources, for example a macro that you want to debug, or an external workbench.
 * In that macro (or workbench .py file) add the code lines:




 * This is where the execution will halt when the macro is run.


 * Start the liclipse debug server (menu pydev).


 * Start fc.


 * Run the macro (or any other file with a trigger) from within freecad, as you would normally do.


 * Happy debugging.


 * The use of LiClipse for remote debugging, and the steps described here related to liclipse, should work on any platform. The parts related to AppImage is for linux only.

Débogage d'OpenCasCade
Pour les développeurs qui ont besoin d'approfondir le noyau d'OpenCasCade, l'utilisateur @abdullah a créé un fil de discussion qui explique comment le faire.