Debugging/de

Erster Test
Bevor du den Schmerz des Fehlersuchens durchmachst, benutze das Test Framework, um zu überprüfen, ob die Standardtests ordnungsgemäß funktionieren. Wenn sie nicht vollständig ausgeführt werden, liegt möglicherweise eine defekte Installation vor.

Befehlszeile
Die Fehlersuche von FreeCAD wird durch einige interne Mechanismen unterstützt. Die Kommandozeilenversion von FreeCAD bietet einige Optionen für die Fehlersuchunterstützung.

Dies sind die derzeit anerkannten Optionen in FreeCAD 0.15:

Grundlegende Optionen: -v [ --version ] Druckt Versionszeichenkette -h [ --help ] Druckt Hilfsmeldung aus. -c [ --console ] Startet im Konsolenmodus --response-file arg Kann auch mit'@name' angegeben werden.

Konfiguration: -l [ --write-log ]      Schreibt eine Log-Datei nach: $HOME/.FreeCAD/FreeCAD.log --log-file arg          Anders als bei --write-log wird hier in eine Datei mit beliebigem Namen geschrieben -u [ --user-cfg ] arg   Benutzerkonfigurationsdatei, um Benutzereinstellungen zu laden/speichern -s [ --system-cfg ] arg Systemkonfigurationsdatei, um Systemeinstellungen zu laden/speichern -t [ --run-test ] arg   Test-Level -M [ --module-path ] arg Zusätzliche Modulpfade -P [ --python-path ] arg Zusätzliche Python-Pfade

Erzeugen einer Rückverfolgung
Wenn Du eine FreeCAD-Version der Anfangsphase der Entwicklungskurve verwendest, kann sie "abstürzen". Du kannst dabei helfen, diese Probleme zu lösen, indem Du einen "Backtrace" an die Entwickler schickst. Um dies zu tun, musst Du ein "Debug build" der Software haben. "Debug build" ist ein Parameter, der zur Compile-Zeit gesetzt wird, also musst Du entweder FreeCAD selbst kompilieren oder Dir eine vorkompilierte "debug"-Version besorgen.

If you are running a version of FreeCAD from the bleeding edge of the development curve, it may "crash". You can help solve such problems by providing the developers with a "backtrace". To do this, you need to be running a "debug build" of the software. "Debug build" is a parameter that is set at compile time, so you'll either need to compile FreeCAD yourself, or obtain a pre-compiled "debug" version.

Für Linux
Linux Fehlerbehebung →

Voraussetzungen:


 * Softwarepaket gdb installiert
 * ein Fehlerbehebungs Build von FreeCAD (zur Zeit nur verfügbar unter building from source)
 * ein FreeCAD-Modell, das einen Absturz verursacht

Schritte: Gib in deinem Terminalfenster Folgendes ein:

GNUdebugger gibt einige Initialisierungsinformationen aus. Die (gdb) zeigt, dass der GNUDebugger im Terminal läuft, das nun eingegeben wird:

FreeCAD wird nun gestartet. Führe die Schritte aus, die dazu führen, dass FreeCAD abstürzt oder einfriert, und gib dann in das Terminalfenster ein:

Dies führt zu einer langen Auflistung dessen, was das Programm beim Absturz oder Einfrieren genau getan hat. Füge dies deinem Problembericht bei.

Drucke auch die Werte der lokalen Variablen. Dies kann mit einer Zahl kombiniert werden, um die Anzahl der angezeigten Rahmen zu begrenzen.

Für MacOSX
MacOSX Fehlerbehebung →

Voraussetzungen:


 * Softwarepaket lldb installiert
 * ein Fehlerbehebungs build von FreeCAD
 * ein FreeCAD Modell, dass den Absturz verursacht

Schritte: Gib das Folgende in Dein Terminal Fenster ein:

LLDB gibt einige Initialisierungsinformationen aus. Die (lldb) zeigt an, dass der Debugger im Terminal läuft, jetzt eingegeben:

FreeCAD wird nun gestartet. Führe die Schritte aus, die dazu führen, dass FreeCAD abstürzt oder einfriert, und gib dann in das Terminalfenster ein:

Dies führt zu einer längeren Auflistung dessen, was das Programm genau getan hat, als es abgestürzt ist oder eingefroren ist. Füge dies deinem Problembericht bei.

List Libraries Loaded by FreeCAD
(Applicable to Linux and MacOS)

Sometimes it's helpful to understand what libraries FreeCAD is loading, specifically if there are multiple libraries being loaded of the same name but different versions (version collision). In order to see which libraries are loaded by FreeCAD when it crashes you should open a terminal and run it in the debugger. In a second terminal window, find out the process id of FreeCAD:

Use the returned id and pass it to :

This prints a long list of loaded resources. So for example, if trying to ascertain if more than one Coin3d library versions is loaded, scroll through the list or search directly for Coin in the output:

Python Fehlerbehebung
Für einen moderneren Ansatz zur Fehlerbehebung bei Python siehe diese Beiträge:
 * Fehlerbehebungsmakros mit VS 2017
 * Python Arbeitsbereiche Fehlerbehebung

For a more modern approach to debugging Python, see these posts:
 * Debugging macros with VS 2017
 * Python workbenches debugging
 * python3.dll, Qt5Windgets.dll, Qt5Gui.dll and Qt5Core.dll not found

winpdb
winpdb Fehlersuche →

Hier ist ein Beispiel für die Verwendung von Winpdb in FreeCAD:

Wir benötigen den Python-Debugger Winpdb. Wenn er nicht installiert ist, lässt sich das auf Ubuntu/Debian wie folgt tun:

Jetzt werden wir den Debugger einrichten.


 * 1) Starte Winpdb.
 * 2) Setze das Fehlerbeseitigungsprogramm Passwort auf "test": Gehe zum Menü Datei → Passwort und setze das Passwort.

Jetzt werden wir ein Python Test-Skript in FreeCAD Schritt-für-Schritt ablaufen lassen.


 * 1) Starten Sie winpdb und setzen Sie ein Passwort (z.B. Test)
 * 2) Erzeugen Sie eine Pythondatei mit folgendem Inhalt:


 * 1) Starte FreeCAD und lade die obige Datei in FreeCAD.
 * 2) Drücke F6, um es auszuführen.
 * 3) Jetzt wird FreeCAD nicht mehr reagieren, weil das Python Fehlerbeseitigungsprogramm wartet.
 * 4) Wechsle zur Windpdb GUI und klicke auf "Anhängen". Nach einigen Sekunden erscheint ein Eintrag "", in dem du doppelt klicken musst.
 * 5) Nun erscheint das aktuell ausgeführte Skript in der Winpdb.
 * 6) Setze einen Bruch in der letzten Zeile und drücke F5.
 * 7) Drücke nun F7, um in den Python Code von Draft.makeWire zu gelangen.

Visual Studio Code (VS Code)
VS Code Fehlerbehebung →

Voraussetzungen:


 * Das ptvsd Paket muss installiert werden

pypi Seite

Visual Studio Code Dokumentation für die Fern Fehlerbeseitigung

Schritte:
 * Füge folgenden Code am Anfang deines Skripts hinzu


 * Füge eine Fehlersuchkonfiguration in Visual Studio Code . Es sollte so aussehen:

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


 * Füge im VS-Code einen Haltepunkt hinzu, wo immer Du willst.
 * Starte das Skript in FreeCAD. FreeCAD Freeze wartet auf den Anhang.
 * In VS Code startest Du die Fehlersuche der verwendeten erstellten Konfiguration. Du solltest Variablen im Fehlersuchbereich sehen.

Debugging OpenCasCade
For developers needing to dig deeper in to the OpenCasCade kernel, user @abdullah has created a thread orientation discussing how to do so.