Debugging/pl

Najpierw przetestuj
Zanim przejdziesz przez ból debugowania użyj środowiska pracy Test aby sprawdzić czy standardowe testy działają poprawnie. Jeśli testy nie są kompletne, prawdopodobnie instalacja jest uszkodzona.

Wiersz poleceń
Debugowanie w programie FreeCAD jest wspierane przez kilka wewnętrznych mechanizmów. Wersja programu FreeCAD z wierszem poleceń dostarcza kilka opcji do obsługi debugowania.

Są to obecnie rozpoznawane opcje w programie FreeCAD w wersji 0.19:

Opcje ogólne: -v [ --version ]    Drukuje ciąg znaków wersji. -h [ --help ]       Drukuje komunikat pomocy -c [ --console ]    Uruchamia się w trybie konsolowym --response-file arg Można też podać z '@name' --dump-config       Zrzuca konfigurację --get-config arg    Wypisuje wartość żądanego klucza konfiguracyjnego

Konfiguracja: -l [ --write-log ]       Zapisuje plik dziennika do: $HOME/.FreeCAD/FreeCAD.log (Linux) $HOME/Library/Preferencje/FreeCAD/FreeCAD.log (macOS) %APPDATA%FreeCAD/FreeCAD.log (Windows) --log-file arg           W przeciwieństwie do --write-log pozwala na logowanie do                            dowolnego pliku. -u [ --user-cfg ] arg    Plik konfiguracyjny użytkownika do ładowania / zapisywania ustawień użytkownika -s [ --system-cfg ] arg  Plik konfiguracyjny systemu do załadowania / zapisu ustawień systemowych -t [ --run-test ] arg    Przypadek testowy - lub 0 dla wszystkich -M [ --module-path ] arg Ścieżki do dodatkowych modułów -P [ --python-path ] arg Dodatkowe ścieżki dostępu do Pythona --single-instance        Pozwala na uruchomienie pojedynczej instancji aplikacji

Generowanie śladu wstecznego
Jeżeli używasz wersji FreeCAD z ostatniej fazy rozwoju, może ona ulec awarii. Możesz pomóc w rozwiązaniu takich problemów poprzez dostarczenie deweloperom śladów wstecz. Aby to zrobić, musisz mieć uruchomiony debug build oprogramowania. Debug build jest parametrem, który jest ustawiany w czasie kompilacji, więc albo będziesz musiał skompilować FreeCAD samodzielnie, albo zdobyć prekompilowaną wersję debug.

Dla systemu Linux
Debugowanie w systemie Linux →

Wymagania wstępne:


 * zainstalowany pakiet oprogramowania gdb
 * debug build FreeCAD (w tym momencie dostępny tylko przez kompilację ze źródeł)
 * model FreeCAD, który powoduje awarię

Postępowanie: W oknie terminala wprowadź następujące dane:

Znajdź binaria FreeCAD w swoim systemie:

GNUdebugger wyśle kilka informacji inicjalizujących. Polecenie (gdb) pokazuje, że GNUDebugger jest uruchomiony w terminalu, teraz wprowadź dane:

FreeCAD zostanie teraz uruchomiony. Wykonaj czynności, które powodują awarię lub zawieszenie programu FreeCAD, a następnie wpisz w oknie terminala:

Spowoduje to wygenerowanie długiej listy tego, co dokładnie robił program, kiedy się zawiesił lub przestał działać. Dołącz to do swojego raportu o problemie.

Wypisuje również wartości zmiennych lokalnych. Może to być połączone z liczbą, aby ograniczyć ilość wyświetlanych klatek.

Dla systemu macOS
Debugowanie w systemie macOS →

Wymagania wstępne:


 * zainstalowany pakiet oprogramowania lldb
 * debug build FreeCAD
 * model FreeCAD, który powoduje awarię

Postępowanie: W oknie terminala wprowadź następujące dane:

LLDB wyśle kilka informacji inicjalizujących. Polecenie (lldb) pokazuje, że GNUDebugger jest uruchomiony w terminalu, teraz wprowadź dane:

FreeCAD zostanie teraz uruchomiony. Wykonaj czynności, które powodują awarię lub zawieszenie programu FreeCAD, a następnie wpisz w oknie terminala:

Spowoduje to wygenerowanie długiej listy tego, co dokładnie robił program, kiedy się zawiesił lub przestał działać. Dołącz to do swojego raportu o problemie.

Lista bibliotek załadowanych przez FreeCAD
(Dotyczy systemów Linux i macOS)

Czasami pomocne staje się określenie, jakie biblioteki ładuje FreeCAD, szczególnie jeśli ładowane są biblioteki o tej samej nazwie, ale w różnych wersjach (kolizja wersji). Aby zobaczyć, które biblioteki są ładowane przez FreeCAD podczas awarii, powinieneś otworzyć terminal i uruchomić go w debugerze. W drugim oknie terminala znajdź id procesu dla FreeCAD:

Użyj uzyskanego identyfikatora i podaj go do :

Wyświetli to długą listę załadowanych zasobów. Tak więc, na przykład, jeśli próbujesz się upewnić, że więcej niż jedna wersja biblioteki Coin3d jest załadowana, przewiń listę lub poszukaj bezpośrednio Coin na liście:

Debugowanie w Python
Aby uzyskać bardziej nowoczesne podejście do debugowania w środowisku Python, zobacz te posty:
 * Debugowanie makrodefinicji z VS 2017
 * Debugowanie środowisk pracy w Pythonie
 * python3.dll, Qt5Windgets.dll, Qt5Gui.dll i Qt5Core.dll nie znaleziono

winpdb
Debugowanie w winpdb →

Oto przykład użycia Winpdb wewnątrz FreeCAD:

Potrzebujemy debuggera Python Winpdb. Jeśli nie masz go zainstalowanego, na Ubuntu/Debianie zainstaluj go za pomocą:

Teraz skonfigurujmy debugger.


 * 1) Uruchom Winpdb.
 * 2) Ustaw hasło debuggera na "test": Przejdź do menu  i ustaw hasło.

Teraz krok po kroku uruchomimy testowy skrypt Python w programie FreeCAD.


 * 1) Uruchomić winpdb i ustawić hasło (np. test)
 * 2) Utwórz plik Python z tą zawartością


 * 1) Uruchom program FreeCAD i załaduj powyższy plik do programu FreeCAD,
 * 2) Naciśnij klawisz  aby go wykonać,
 * 3) Teraz FreeCAD przestanie reagować, ponieważ debugger Pythona czeka,
 * 4) Przełącz się do GUI Windpdb i kliknij na "Dołącz". Po kilku sekundach pojawi się element "", na którym należy dwukrotnie kliknąć,
 * 5) Teraz w Winpdb pojawi się aktualnie wykonywany skrypt,
 * 6) Ustaw punkt przerwanie w ostatniej linii i naciśnij klawisz ,
 * 7) Teraz naciśnij klawisz, aby wejść do kodu Python Draft.makeWire.

Kod Visual Studio (VS Code)
Debugowanie kodu VS →

Wymagania wstępne:


 * Pakiet ptvsd musi być zainstalowany w Python 3 poza środowiskiem programu FreeCAD, a następnie moduł musi być skopiowany do folderu biblioteki Pythona programu FreeCAD.

strona pypi

Dokumentacja Visual Studio Code do zdalnego debugowania

Postępowanie:
 * Dodaj następujący kod na początku swojego skryptu


 * Dodaj konfigurację debugowania w Visual Studio Code.
 * Powinna ona wyglądać następująco:

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


 * W VS Code dodaj punkt przerwania gdziekolwiek chcesz.
 * Uruchom skrypt w programie FreeCAD. FreeCAD zatrzymuje się w oczekiwaniu na załącznik.
 * W VS Code rozpocznij debugowanie używając stworzonej konfiguracji. Powinieneś zobaczyć zmienne w obszarze debuggera.
 * Podczas ustawiania punktów przerwania VS Code będzie zgłaszał, że nie znalazł pliku .py otwartego w edytorze VS Code.
 * Zmień "remoteRoot": "." na "remoteRoot": " "
 * Na przykład, jeśli plik Python rezyduje w /home/FC_myscripts/myscript.py
 * Zmień na: "remoteRoot": "/home/FC_myscripts"
 * Jeśli tylko debugujesz makrodefinicje FreeCAD z folderu makr FreeCAD, a ten folder to "C:/Users/ /AppData/Roaming/FreeCAD/Macro", to użyj:
 * "localRoot": "C:/Users/ /AppData/Roaming/FreeCAD/Macro",
 * "remoteRoot": "C:/Users/ /AppData/Roaming/FreeCAD/Macro".
 * Jeśli twoja makrodefinicja nie może znaleźć ptvsd, mimo że gdzieś go zainstalowało, poprzedź import ptvsd znakiem

Gdzie ścieżka wskazuje katalog, w którym ptvsd został zainstalowany. W pakiecie dla Maca jest to /Applications/FreeCAD.App/Contents/Resources/bin/python.
 * W lewej dolnej krawędzi VSCode możesz wybrać plik wykonywalny Python - najlepiej, aby była to wersja spakowana z programem FreeCAD.

Można go zlokalizować w systemie wpisując:

w konsoli Python programu 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.

Debugowanie OpenCasCade
Dla programistów chcących zagłębić się w kernel OpenCasCade, użytkownik @abdullah stworzył wątek orientacyjny omawiający jak tego dokonać.