PTVSD_3
Programmer's notes

Debugowanie skryptu Pythona na Raspberry Pi

0 58

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:

  1. Piszemy skrypt w Pythonie
  2. Dodajemy do naszego skryptu pakiet “ptvsd“, umożliwia on właśnie zdalne podłączenie się do procesu skryptu
  3. Uruchamiamy nasz skrypt na Raspberry Pi
  4. 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.

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.

PTVSD_1

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.

PTVSD_2

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.

PTVSD_3

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 :)

PTVSD_4

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.

Leave a Reply

DEV

Around Dev

My way of seeing

%d bloggers like this: