Debugging/it

Prova preliminare
Prima di provare il debug usare la La struttura di Test (test framework - macro) per verificare se i test standard funzionano correttamente. Se non funzionano, è possibile che l'installazione sia danneggiata.

Riga di comando
Il debug di FreeCAD è supportato da alcuni meccanismi interni. La versione a riga di comando di FreeCAD fornisce delle opzioni di supporto del debug:

Queste sono le opzioni attualmente riconosciute in FreeCAD 0.15:

Opzioni generiche: -v [ --version ]     Stampa una stringa della versione -h [ --help ]        Stampa un messaggio di aiuto -c [ --console ]     Avvia in modalità console --response-file arg  Può anche essere specificato con '@name'

Configurazione: -l [ --write-log ]      Scrive un file di log file in: $HOME/.FreeCAD/FreeCAD.log --log-file arg          A differenza di --write-log permette di scrivere il file di log in un file arbitrario -u [ --user-cfg ] arg   File per caricare/salvare le impostazioni dell'utente -s [ --system-cfg ] arg File per caricare/salvare le impostazioni di sistema -t [ --run-test ] arg   Livello di Test -M [ --module-path ] arg Percorsi di moduli aggiuntivi -P [ --python-path ] arg Percorsi aggiuntivi di python

Generare un Backtrace
Se si esegue una versione sperimentale di FreeCAD ancora in fase sviluppo, essa potrebbe "bloccarsi". Si può aiutare gli sviluppatori a risolvere questi problemi fornendo loro un "backtrace". Per fare questo, è necessario eseguire un "debug build" del software. "Debug build" è un parametro che viene impostato al momento della compilazione, perciò bisogna auto-compilare FreeCAD, oppure ottenere una versione "debug" precompilata.

Per Linux
Linux Debugging →

Prerequisiti:


 * pacchetto software gdb installato
 * un debug build di FreeCAD (in questo momento disponibili solo per la compilazione da sorgenti)
 * un modello di FreeCAD che causa un crash

Passaggi:

Immettere quanto segue nella finestra del terminale:

LLDB produrrà alcune informazioni di inizializzazione. Il (lldb) mostra che il debugger è in esecuzione nel terminale, ora inserisci::

Ora FreeCAD viene avviato. Effettuare le operazioni che causano il crash o il blocco di FreeCAD, quindi immettere 'bt' nella finestra del terminale.

Questo genera una lunga lista che descrive esattamente ciò che il programma stava facendo quando è andato in crash o in blocco. Includere questa lista nel vostro rapporto sul problema.

Stampa anche i valori delle variabili locali. Questo può essere combinato con un numero per limitare il numero di frame mostrati.

Per MacOSX
MacOSX Debugging →

Prerequisiti:


 * pacchetto software lldb installato
 * un debug build di FreeCAD
 * un modello di FreeCAD che causa un crash

Passaggi:

Immettere quanto segue nella finestra del terminale:

LLDB produrrà alcune informazioni di inizializzazione. Il (lldb) mostra che il debugger è in esecuzione nel terminale, ora inserisci:

Ora FreeCAD viene avviato. Effettuare le operazioni che causano il crash o il blocco di FreeCAD, quindi immettere 'bt' nella finestra del terminale.

Questo genera una lunga lista che descrive esattamente ciò che il programma stava facendo quando è andato in crash o in blocco. Includere questa lista nel vostro rapporto sul problema.

Eliminare errori Python
Per un approccio più moderno al debug di Python, almeno su Windows, vedere questo
 * | post nel Forum.
 * Python workbenches debugging
 * python3.dll, Qt5Windgets.dll, Qt5Gui.dll and Qt5Core.dll not found

winpdb
winpdb Debugging →

Ecco un esempio dell'uso di "Winpdb" all'interno di FreeCAD:

Abbiamo bisogno del debugger di Python: "Winpdb". Se non lo hai installato, su Ubuntu/Debian installalo con:

Ora consente di impostare il debugger.


 * 1) Start Winpdb.
 * 2) Imposta la password del debugger su "test": vai al menu "File" → "Password" e imposta la password.

Ora eseguiremo uno script Python di prova in FreeCAD passo dopo passo.


 * 1) Eseguire winpdb e impostare la password (ad esempio test)
 * 2) Creare un file Python con questo contenuto


 * 1) Avviare FreeCAD e caricare il file precedente in FreeCAD.
 * 2) Premere F6 per eseguirlo.
 * 3) Ora FreeCAD non risponde perché il debugger Python è in attesa
 * 4) Passare alla GUI di Windpdb e cliccare su "Attach". Dopo pochi secondi appare una voce "" su cui si deve fare doppio clic.
 * 5) Ora in Winpdb viene visualizzato lo script attualmente in esecuzione.
 * 6) Impostare un break nell'ultima riga e premere F5.
 * 7) Ora premere F7 per entrare nel codice Python di Draft.makeWire

Visual Studio Code (VS Code)
VS Code Debugging →

Prerequisiti:


 * ptvsd il pacchetto deve essere installato

pypi page

Documentazione di Visual Studio Code per il debug remoto

Passi:
 * Aggiungi il seguente codice all'inizio del tuo script


 * Aggiungi una configurazione di debug nel codice di Visual Studio . Dovrebbe apparire così:

"configurations": [ {           "name": "Python: Attacher", "type": "python", "request": "attach", "port": 5678, "host": "localhost", "pathMappings": [ {                   "localRoot": "${workspaceFolder}", "remoteRoot": "." }           ]        },


 * In VS Code aggiungi un breakpoint dove vuoi.
 * Avvia lo script in FreeCAD. Blocco di FreeCAD in attesa di allegato.
 * In VS Code avviare il debug della configurazione creata utilizzata. Dovresti vedere le variabili nell'area debugger.