W poprzednim poście (Visual Studio + Python) opisałem jak zainstalować “Python Tools for Visual Studio (PTVS)”. Dzięki temu pluginowi możemy programować w Pythonie w naszym ulubionym IDE. W tym poście pokażę, jak uruchomić kod w Pythonie na Raspberry Pi i go zdebugować.
Visual Studio potrafi podłączyć swój debugger do już uruchomionego procesu, czy to lokalnie czy też na zdalnym komputerze. Także na innym systemie. W tym Raspberry Pi. Scenariusz wygląda następująco:
- Piszemy skrypt w Pythonie
- Dodajemy do naszego skryptu pakiet “ptvsd“, umożliwia on właśnie zdalne podłączenie się do procesu skryptu
- Uruchamiamy nasz skrypt na Raspberry Pi
- W Visual Studio podłączamy debugger do malinki (która teraz jest serwerem debugowania)
Zdalne debugowanie możliwe jest właśnie dzięki pakietowi “ptvsd“. Należy go zainstalować na malince:
W skryptcie należy go zaimportować i skonfigurować. W tym przypadku umożliwiamy zdalne podłączanie procesu debugowania oraz ustawiamy nasz sekret “SomeSecret”. Będzie on potrzebny w kolejnym kroku.
|
import ptvsd ptvsd.enable_attach("SomeSecret") |
Możliwe jest także podpięcie certyfikatu i zabezpieczenie naszego połączenia z malinką. Na razie jednak obejdziemy się bez tego. Kod skryptu znajduje się w repozytorium na githubie.
Po uruchomieniu skryptu możemy podłączyć się do malinki z Visual Studio. W tym celu przechodzimy do “Debug” > “Attach to process“. Jako typ Transportu wybieramy “Python remote (ptvsd)“. Następnie wskazujemy adres naszej malinki wraz z wcześniej wpisanym sekretem i po naciśnięciu na przycisk “Refresh” powinniśmy dostać listę procesów, do których możemy się podłączyć. W tym przypadku widzimy jeden: “python @ tcp://192.168.0.11/”. To nasz uruchomiony skrypt. Podłączamy się więc do niego debuggerem.

W kodzie skryptu ustawiamy breakpoint i czekamy aż wykonywanie skryptu dojdzie do niego. W tym momencie mamy już pełny debugger Visual Studio na procesie z naszym skryptem. Z całym stackiem, zmiennymi i innymi dobrodziejstwami IDE. Na screenie widzimy konsolę z malinki oraz debugger Visual Studio. Skrypt ma pętlę, która wykonuje się aż użytkownik nie przypisze do zmiennej X wartości 0 (zero). Breakpoint ustawiony jest w linii z instrukcją wyświetlenia wartości zmiennej. Poniżej widzimy wartości zmiennych, do których również mamy dostęp z poziomu debuggera.

Z okna “Immediate Window” możemy wykonywać różne polecenia na malince. Wypiszmy informację, że zaraz zmienimy wartość wpisanej zmiennej: “VS is changing the X for 0 ;)” i następnie to zróbmy. W tym momencie, po wznowieniu wykonywania skryptu zostanie spełniony warunek kończący pętlę i skrypt się zakończy pomimo tego, że użytkownik nie wpisał 0.

Mamy więc dostęp do malinki. Tutaj przy okazji pobawiłem się trochę świecącymi diodami. Dla spostrzegawczych, widzicie “import ptvsd”? Wygląda to jak początek naszego skryptu :)

Debugowanie przyda się, kiedy przejdę do kolejnych, bardziej skomplikowanych etapów pracy nad Smart Lodówką. Teraz przyszła już pora na obsługę zdarzeń otwierania drzwi lodówki.
C.
Like this:
Like Loading...
Leave a Reply