Fehlerdiagnose
Testen kommt zuerst
Bevor Sie sich auf aufwendiges Debuggen einlassen, verwenden Sie zuerst das integrierte Test-Framework, um zu überprüfen, ob die Standard-Tests einwandfrei ablaufen. Wenn nicht, ist vielleicht eine fehlerhafte Installation das Grundproblem.
Befehls-Zeile
Das Debugging von FreeCAD wird von einigen internen Mechanismen unterstützt. Die Kommandozeilen-Version von FreeCAD bietet folgende Optionen für die Debugging-Unterstützung:
Derzeit werden folgende Optionen in FreeCAD 0.15 erkannt:
Generelle Optionen:
-v [ --version ] Zeigt die Programmversion -h [ --help ] Zeigt die Hilfemeldung -c [ --console ] Startet im Konsolenmodus --response-file arg Kann auch mit '@name' spezifiziert 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 eines Backtrace
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.
Für Linux
Linux Debugging ---->
Vorbedingungen:
- installiertes Softwarepake gdb
- Debug build von FreeCAD (zur Zeit nur durch Compile der Source)
- ein FreeCAD-Modell, dass den Absturz verursacht
Vorgehen: Geben Sie Folgendes im Terminalfenster ein:
$ cd FreeCAD/bin
$ gdb FreeCAD
GNUdebugger will output some initializing information. The (gdb) shows GNUDebugger is running in the terminal, now input:
(gdb) handle SIG33 noprint nostop
(gdb) run
FreeCAD startet nun. Führen Sie die Schritte aus, die zum Einfrieren oder Absturz von FreeCAD führen. Geben Sie dann Folgendes im Terminalfenster ein:
code
(gdb) bt
Dies erzeugt eine längliche Liste mit den genauen Angaben, was das Programm tat, als es abstürzte oder einfror. Fügen Sie dieses Listing Ihrem Fehlerbericht hinzu.
(gdb) bt full
Print the values of the local variables also. This can be combined with a number to limit the number of frames shown.
Für MacOSX
MacOSX Debugging ---->
Vorbedingungen:
- installiertes Softwarepake lldb
- Debug build von FreeCAD
- ein FreeCAD Modell, dass den Absturz verursacht
Schritte: Gib das Folgende in Dein Terminal-Fenster ein:
$ cd FreeCAD/bin
$ lldb FreeCAD
LLDB wird einige Initialisierunginformationen ausgeben. Wenn der (lldb) anzeigt, dass der Debugger im Terminal läuft, gib ein:
(lldb) run
FreeCAD startet nun. Führ' die Schritte aus, die zum Absturz oder zum Einfrieren von FreeCAD führen, dann gib im Terminal-Fenster ein:
(lldb) bt
Dies erzeugt ein längeres Listing dessen, was das Programm tat, bevor es abstürzte oder einfror. Füg' dies Deiner Problemmeldung bei.
Python Debugging
Für eine modernere Herangehensweise, um Python zu debuggen, siehe diesen Eintrag im Forum.
winpdb
winpdb Debugging ---->
Here is an example of using Winpdb inside FreeCAD:
Wir benötigen den Python-Debugger Winpdb. Wenn er nicht installiert ist, lässt sich das auf Ubuntu/Debian wie folgt tun:
sudo apt-get install winpdb
Jetzt werden wir den Debugger einrichten.
- Starte Winpdb.
- Setze das Debugger-Passwort auf "test": Gehe zum Menü Datei → Passwort (File → Password) und setze das Passwort.
Jetzt werden wir ein Python Test-Skript in FreeCAD Schritt-für-Schritt ablaufen lassen.
- Starten Sie winpdb und setzen Sie ein Passwort (z.B. Test)
- Erzeugen Sie eine Pythondatei mit folgendem Inhalt:
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)
- Starte FreeCAD und lade die obige Datei in FreeCAD
- Drücke F6 zur Ausführung
- Jetzt wird FreeCAD unansprechbar, weil der Python-Debugger wartet
- Wechsle zur Winpdb-GUI und klicke auf "Attach". Nach ein paar Sekunden erscheint ein Element "<Item>", das Du doppelklicken musst
- Jetzt erscheint das gerade ausgeführte Skript in Winpdb
- Setze einen Breakpoint in die letzte Zeile und drücke F5
- Nun drücke F7 zur Einzelschrittausführung im Python-Code von Draft.makeWire
Visual Studio Code (VS Code)
VS Code Debugging ---->
Prerequisites:
- Das ptvsd-Paket muss installiert werdenpypi-Webseite, ptvsd-Paket (engl.)
pip install ptvsd
Visual Studio Code documentation for remote debugging
Steps:
- Add following code at the beginning of your 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()
- Add a debug configuration in Visual Studio Code Debug → Add Configurations…. It should looks like this :
"configurations": [ { "name": "Python: Attacher", "type": "python", "request": "attach", "port": 5678, "host": "localhost", "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "." } ] },
- In VS Code add a breakpoint anywhere you want.
- Launch the script in FreeCAD. FreeCAD freeze waiting for attachment.
- In VS Code start debugging used created configuration. You should see variables in debugger area.
- Erste Schritte
- Installation: Herunterladen, Windows, Linux, Mac, Zusätzlicher Komponenten, Docker, AppImage, Ubuntu Snap
- Grundlagen: Über FreeCAD, Graphische Oberfläche, Mausbedienung, Auswahlmethoden, Objektname, Programmeinstellungen, Arbeitsbereiche, Dokumentstruktur, Objekteigenschaften, Hilf FreeCAD, Spende
- Hilfe: Tutorien, Video Tutorien
- Arbeitsbereiche: Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Start, Surface, TechDraw, Test Framework, Web