PokuG stdio.h

stdio.hはおまじない

MENU

RaspberryPiでVisualStudioCodeを使いリモートデバックする その3 ~リモートデバック~

f:id:yarufu101:20201211074338p:plain

RaspberryPi4にVisualStudioCodeを入れてみたがお世辞にも軽いとは言えなかったのでWindows環境からリモートデバックできないのか!?
と思ったのでやってみたメモ。その3
その1その2を見てない人は見たほうが吉

pokug.net

pokug.net

想定してること

今回の想定では、
・Windows10のVSCodeでソースコードを書く
・Windows10のVSCodeでデバック
・ラズパイ上のpythonのソースコードはラズパイにsambaをインストールし、sambaの共有フォルダ上に置きWindows10から編集できるようにする
・sambaの共有フォルダは「/home/samba/」
・セキュリティは今回考えない

今回は

やっとリモートデバックをする

方法

1.ラズパイにptvsdをインストールする

ptvsdはVisual Studio Code用のPythonのリモートデバッグツールらしい。
(Python Tools for Visual Studio)

sudo pip install ptvsd

上のコマンド実行。実行結果は以下。

pi@SHIMUSHU:~ $ sudo pip install ptvsd
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting ptvsd
Downloading https://files.pythonhosted.org/packages/44/5b/fa477e4fd8e62c722febdc52462d7b037a77aa963c3e400a8 e90e8f0d2c0/ptvsd-4.3.2-py2.py3-none-any.whl (4.9MB)
100% |????????????????????????????????| 4.9MB 79kB/s
Installing collected packages: ptvsd
Successfully installed ptvsd-4.3.2

 入りました。ptvsdのバージョンは4.3.2ですね。

2.Windows10のVSCodeに「launch.json」を作成

f:id:yarufu101:20200126003428j:plain

「デバック」→「構成を開く」をクリック

f:id:yarufu101:20200126003458j:plain

一番上の「Python・・・」をクリック

3.「launch.json」を書き換える

{
  // IntelliSense を使用して利用可能な属性を学べます。
  // 既存の属性の説明をホバーして表示します。
  // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [

    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "pathMappings":[{
        "localRoot": "${workspaceFolder}",
        "remoteRoot": "/home/samba",
      }],
      "port": 3000,
      "host": "SHIMUSHU"
    }
  ]
}

 「launch.json」を上記に書き換え。
元の「launch.json」には"pathMappings"はないが書き足す。"remoteRoot"はその1で作ったsambaのラズパイから見た共有フォルダ、ポートは3000、hostはラズパイの名前、ラズパイの名前でダメな場合はIPアドレスを書く。

4.リモートデバックをしたいプログラムを書く

VSCodeで「test.py」というファイル名で以下プログラムを書く。ソースはこちらのを拝借しました。(少し変えてあります)。ただprintで連続表示しているだけのプログラム。

qiita.com

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def main():
import ptvsd ## リモートマシンからの接続を許可する。 ptvsd.enable_attach(address=('0.0.0.0', 3000)) ## デバッガの接続を待つ。 ptvsd.wait_for_attach() print("hello world") print("hello world2") print("hello world3") print("hello world4") print("hello world5") if __name__ == '__main__': main()
要はデバックしたいプログラムに以下の3行を最初の方に追加する
import ptvsd
  ptvsd.enable_attach(address=('0.0.0.0', 3000))
  ptvsd.wait_for_attach()
ptvsd.enable_attach(address=('0.0.0.0', 3000))の3000は「launch.json」で書いたportの3000。

f:id:yarufu101:20200126005144j:plain

VSCode上では上のような感じになる。

5.SSHでラズパイにログインし、VSCodeで作った「test.py」を実行

cd /home/samba/
python test.py

f:id:yarufu101:20200126010104j:plain

上のように待ちの状態になる。

6.VSCodeにブレイクポイントを設定し、デバックを実行

f:id:yarufu101:20200126010330j:plain

13行目にブレイクポイントを追加。左の虫(?)マークをクリックした後に、上の▷マークをクリックしデバックの実行

7.プログラムがブレイクポイントで止まる

f:id:yarufu101:20200126010534j:plain

止まりましたね。以上。

その他

ネットでは色々な方法があるようで、これはその中の一つっぽい。
他にもっと効率の良い方法があるのかも?まぁ動いたからヨシとする。