🔰

Visual Studio CodeをMayaと繋げてデバックする方法(debugpy編)

2023/02/05に公開

概要

他の記事で、[MayaCode]を使用したリモートデバッグの方法を説明いたしました。
本記事では、[debugpy]を利用する方法を説明いたします。

結論

debugpyを利用して、リモートデバックをするには、以下の手順が必要です。

  1. vscodeのlaunch.jsonを設定する
  2. debugpyをinstallする
  3. mayaのuserSetup.pyを用意する

では、それぞれ詳しく見ていきましょう。


0. テスト用のフォルダを作成する

この過程は、テスト用のディレクトリを作るためのものなので
不要な方は読み飛ばしていただいて、かまいません。
今回は、mayaのscriptフォルダを使ってみます。

mayaのscriptフォルダに以下の通り、フォルダとファイルを作成します。

//Documents/maya/script
    |- remotedebug_test(folder)
        |-remotedebug_test.py

remotedebug_test.pyの中身は以下の通りです。

remotedebug_test.py
print('remotedebug test')

1. launch.jsonを作成する

まずは、vscodeの設定です。

  1. サイドバーの再生マークに虫がついたアイコン[実行とデバック]をクリックします
  2. create a launch.jsonfileをクリックします
  3. Select a debug configurationというテキストエディタが立ち上がるので、Remote Attachを選択
  4. localhostと出てくるので、127.0.0.1と入力して、Enterを押す
  5. テキストエディタに[5678]と打たれているので、何もせずEnterを押す
  6. 下記のように書いてある、launch.jsonが出来上がると思います
launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Remote Attach",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "127.0.0.1",
                "port": 5678
            },
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "."
                }
            ],
            "justMyCode": true
        }
    ]
}

これを、下記のように変更します。

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Maya: Attach",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "127.0.0.1",
                "port": 5678
            }
        }
    ]
}

変更出来たら、上書きしてください。
これで、vscodeの設定は終わりです。

2. debugpyをインストールする

mayaをリモートデバックするためには、debugpyを利用します。

  1. コマンドプロンプトを起動します
  2. 下記コードを入力し、Enterを押します
コマンドプロンプト
pip install debugpy -t %USERPROFILE%Documents\maya\(version)\scripts

インストールが完了すると、コマンドプロンプトに下記のように表示されます。

✅ scriptsフォルダ以下に、debugpyフォルダが作成されていたら完了です。

3. userSetup.pyを作成する

次は、mayaの設定をしていきます。
userSetup.pyにコードを記述することで、vscodeと繋がるように設定します。

  1. mayaのファイルパスが通っているフォルダ以下[C:/Users/(username)/document/maya/(version)/scripts]に、userSetup.pyファイルを作成します
  2. ファイルに、下記コードを記入して上書きします
userSetup.py
import debugpy
debugpy.configure(
    python='C:/Program Files/Autodesk/(MayaVesion)/bin/mayapy.exe')
debugpy.listen(5678)
  1. Mayaを再起動します

4. 確認

最後に、vscodeとmayaが繋がっているか、確認します。
0.で作成したスクリプトで確認します。

  1. vscodeを開いて、maya/scriptフォルダを選択します
  2. remotedebug_testを開きます
  3. F5を押し、debug modeにします
  4. MayaのscriptEditorを開きます
  5. scriptEditorに、0.のスクリプト(remotedebug_test.py)をimportするコードを記載します
from remotedebug_test import remotedebug_test
reload(remotedebug_test)
  1. scriptEditorのprePlay buttonを押します

✅ vscodeで以下の両方が、確認出来たらOKです!お疲れ様でした!
・ vscodeの左側にあるVARIABLES以下に、localsとGlobalsのプルダウンができる
・ DEBUG CONSOLEに remotedebug test と書き込まれる

ブレイクポイントの使い方

折角なので、ブレイクポイントも使ってみましょう。
ブレイクポイントを打つと、打った行の文頭で実行を止めてくれます。

  1. remotedebug_testを変更する
remotedebug_test.py
print('remotedebug test')
print('break point')
  1. 2行目にbreakpointを打つ


3. 4. の確認手順を行う


✅ DEBUG CONSOLEには、remotedebug testとしか出ないはずです

  1. 一番左にあるcontinueボタン|▷を押すと、次のbreakpointまで実行されます

こんな感じで、各ブレイクポイントまでの挙動を確認できます。


おまけ

userSetupにポートを記載していても、commandPortのコードを実行すると上書きされるようです。
元に戻すには、再起動をしないといけないのですが、
簡単なスクリプトをデバックしたいだけなら、[MayaCode]を利用するなど、場面に併せて私は使っています。

※ポートの上書きについての安全性は、知識が薄く保障出来ません。
不安な方は止めておいた方がいいと思います。


参考にさせていただいたサイト様

GitHubで編集を提案

Discussion