FreeCAD Logo FreeCAD 1.0
  • Anglais Afrikaans Arabe Biélorusse Catalan Tchèque Allemand Grec Espagnol Espagnol Basque Finnois Philippin Français Galicien Croate Hongrois Indonésien Italien Japonais Kabyle Coréen Lituanien Néerlandais Norvégien classique Polonais Portugais Portugais Roumain Russe Slovaque Slovène Serbe Suédois Turc Ukrainien Valencien Vietnamien Chinois Chinois
  • Fonctions
  • Télécharger
  • Blog
  • Documentation
    Index de la documentation Premiers pas Documentation pour les utilisateurs Manuel de FreeCAD Documentation des ateliers Documentation sur le codage en Python Documentation pour les développeurs Tutoriels Foire aux questions Politique de confidentialité À propos de FreeCAD
  • Contribuer
    Comment aider Sponsor Signaler un bogue Faire une demande de modification (PR) Emplois et financements Guide pour les contributions Manuel pour les développeurs Traductions
  • Communauté
    Code de conduite Forum The FPA GitHub GitLab Codeberg Mastodon Matrix IRC IRC via Webchat Gitter Discord Reddit Twitter Facebook LinkedIn Calendrier
  • ♥ Donate

Donate

$
Informations SEPA
Veuillez configurer votre virement bancaire SEPA pour:
Beneficiary: The FreeCAD project association
IBAN: BE04 0019 2896 4531
BIC/SWIFT: GEBABEBBXXX
Agence bancaire: BNP Paribas Fortis
Adresse: Rue de la Station 64, 1360 Perwez, Belgium

While Stripe doesn't support monthly donations, you can still become a sponsor! Simply make a one-time donation equivalent to 12 months of support, and you'll gain access to the corresponding sponsoring tier. It's an easy and flexible way to contribute.

If you are not sure or not able to commit to a regular donation, but still want to help the project, you can do a one-time donation, of any amount.

Choose freely the amount you wish to donate one time only.

You can support FreeCAD by sponsoring it as an individual or organization through various platforms. Sponsorship provides a steady income for developers, allowing the FPA to plan ahead and enabling greater investment in FreeCAD. To encourage sponsorship, we offer different tiers, and unless you choose to remain anonymous, your name or company logo will be featured on our website accordingly.

from 1 USD / 1 EUR per month. You will not have your name displayed here, but you will have helped the project a lot anyway. Together, normal sponsors maintain the project on its feet as much as the bigger sponsors.

from 25 USD / 25 EUR per month. Your name or company name is displayed on this page.

from 100 USD / 100 EUR per month. Your name or company name is displayed on this page, with a link to your website, and a one-line description text.

from 200 USD / 200 EUR per month. Your name or company name and logo displayed on this page, with a link to your website and a custom description text. Companies that have helped FreeCAD early on also appear under Gold sponsors.

Instead of donating each month, you might find it more comfortable to make a one-time donation that, when divided by twelve, would give you right to enter a sponsoring tier. Don't hesitate to do so!

Choose freely the amount you wish to donate each month.

Please inform your forum name or twitter handle as a notein your transfer, or reach to us, so we can give you proper credits!

Traqueur de bogues
Atelier Test
Index

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 log dans :
                              $HOME/.local/share/FreeCAD/FreeCAD.log (Linux)
                              $HOME/Library/Application\ Support/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     Chemins de modules supplémentaires
 -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 :

$ whereis freecad
freecad: /usr/local/freecad <--- for example

$ cd /usr/local/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 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 :

$ 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 :

  • 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 :

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é dans un Python 3 en dehors de FreeCAD, puis le module doit être copié dans le dossier de la bibliothèque Python de FreeCAD.
# In a cmd window that has a path to you local Python 3:
pip install ptvsd
# Then if your Python is installed in C:\Users\<userid>\AppData\Local\Programs\Python\Python37
# and your FreeCAD is installed in C:\freecad\bin
xcopy "C:\Users\<userid>\AppData\Local\Programs\Python\Python37\Lib\site-packages\ptvsd" "C:\freecad\bin\Lib\site-packages\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….
  • La configuration doit 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 où vous voulez.
  • Lancez le script dans FreeCAD. FreeCAD se fige en attendant la pièce jointe.
  • Dans VS Code commencez 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.
    • Changer "remoteRoot" : "." en "remoteRoot" : "<directory of file>"
      • Par exemple, si le fichier Python se trouve dans /home/FC_myscripts/myscript.py.
      • Changez en : "remoteRoot" : "/home/FC_myscripts"
    • Si vous ne faites que déboguer les macros FreeCAD depuis le dossier des macros FreeCAD, et que ce dossier est "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro", alors utilisez :
      • "localRoot" : "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro",
      • "remoteRoot" : "C:/Users/<userid>/AppData/Roaming/FreeCAD/Macro".
  • Si votre macro ne trouve pas ptvsd alors que vous l'avez installé quelque part, faites précéder 'import ptvsd' par
from sys import path
sys.path.append('/path/to/site-packages')

Où le chemin est celui du répertoire où ptvsd a été installé.

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

Dans le paquetage Mac c'est /Applications/FreeCAD.App/Contents/Resources/bin/python.

Vous pouvez le trouver sur votre système en tapant

import sys
print(sys.executable)

dans la console Python de FreeCAD.

Avec LiClipse et AppImage

LiClipse Debugging →

  • Extraire AppImage.
> ./your location/FreeCAD_xxx.AppImage --appimage-extract
> cd squashfs-root/
  • L'emplacement sqashfs-root est l'endroit où le débogueur sera connecté plus tard.
  • Assurez-vous que vous pouvez démarrer une session FreeCAD à partir de l'emplacement squashfs-root.
squashfs-root> ./usr/bin/freecadcmd
  • Doit démarrer une session de ligne de commande FreeCAD.
  • Installez LiClipse.
    • Il est livré prêt avec pydev et possède des installateurs pour toutes les plateformes.
    • Pour linux, il suffit d'extraire (à n'importe quel endroit) et d'exécuter.
  • Configurez liclipse pour le débogage.
    • Clic droit sur l'icône pydev (coin supérieur droit) et choisissez la personnalisation.
      • Activez "PyDev Debug" (par la case à cocher, ou il peut être nécessaire d'aller dans l'onglet "Action Set Availability" et de l'activer d'abord).
      • Dans le menu pydev, vous pouvez maintenant choisir "démarrer le serveur de débogage".
    • Utilisez le menu window/open perspective/other > debug.
      • Cliquez avec le bouton droit de la souris sur l'icône de débogage (coin supérieur droit) et choisissez "customize".
      • Cochez "Debug" fait apparaître les outils de navigation de débogage dans la barre d'outils.
    • Ouvrez les préférences par le menu fenêtre/préférences.
      • Dans PyDev/Interpreters ajoutez "new Interpreter by browsing".
      • L'interprète ajouté devrait être : votre localité/squashfs-root/usr/bin/python.
      • Si vous ne l'utilisez que pour FreeCAD, vous pouvez également ajouter les dossiers de l'atelier AddOn ou le faire plus tard dans un projet pydev.
  • Trouvez le chemin vers pydevd.py dans votre installation de liclipse.
    • Quelque chose du genre : votre emplacement/liclipse/plugins/org.python.pydev.xx/pysrc.
  • Créez un projet pydev normal dans liclipse.
    • Importez des sources externes, par exemple une macro que vous voulez déboguer, ou un atelier externe.
    • Dans cette macro (ou dans le fichier .py de l'atelier), ajoutez les lignes de code :
import sys; sys.path.append("path ending with /pysrc")
import pydevd; pydevd.settrace()
  • C'est l'endroit où l'exécution s'arrêtera lorsque la macro sera exécutée.
  • Démarrez le serveur de débogage de Liclipse (menu pydev).
  • Lancez FreeCAD.
squashfs-root> ./usr/bin/freecad
  • Exécutez la macro (ou tout autre fichier avec un déclencheur pydevd.settrace()) à partir de freecad, comme vous le feriez normalement.
  • Bon débogage.
  • L'utilisation de LiClipse pour le débogage à distance, et les étapes décrites ici liées à liclipse, devraient fonctionner sur n'importe quelle plateforme. Les parties relatives à AppImage sont pour linux uniquement.

Pyzo

Voir l'article principal sur Pyzo (en).

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.


Traqueur de bogues
Atelier Test
Index

Cette page est extraite de https://wiki.freecad.org/Debugging

Contactez-nous !
Forum GitHub Mastodon Matrix IRC Gitter.im Discord Reddit Twitter Facebook LinkedIn

© L'équipe FreeCAD. Crédits des images de la page d'accueil (de haut en bas) : ppemawm, r-frank, epileftric, regis, rider_mortagnais, bejant.

Ce projet est soutenu par : , KiCad Services Corp. et autres parrains

GitHubAméliorer cette page sur GitHub