Visual Studio Codeを使用したPython Scriptのデバッグ

更新しました May 17, 2021

環境

ソフトウェア

  • DIAdem

その他

  • Visual Studio Code
  • Python

DIAdemにはPythonスクリプトのデバッグに内部デバッガを使用できない制約があります。その為、代わりとなる外部デバッガを使用する必要があります。ここではVisual Studio Codeを使用してPythonスクリプトのデバッグを行う方法を確認します。

Python及びVisual Studio Codeのインストール

こちらの記事の手順に従い、Python開発環境をインストールします。ここではVisual Studio Codeを使用します。また、こちらの記事 の「Python環境のインストール」の手順2においてpipを使用してdebugpy Pythonモジュールをインストールします。コマンドプロンプトで入力するコマンドは下記の物となります。
py -m pip install debugpy
 

 

Pythonスクリプトを作成とVisual Studio Codeの設定

1. DIAdemのスクリプト設定
DIAdemを起動し、スクリプトを開きます。DIAdemではVBScriptとPYthonスクリプトを使用する事ができ、Pythonスクリプトを使用する場合は下記の様に、メニューバーの設定 > DIAdemの設定を選択し、SCRIPTスクリプト言語Pythonを選択します。設定変更後、メニューバーの設定 > 別名で保存を選択し、変更内容を保存します。
 
001ScriptSetting.png

2. Pythonスクリプトの作成
テスト用に下記のスクリプトを作成し、保存します。このスクリプトを実行すると、現在の年月日と週番号を返します。
 
002testsc.png

上記のスクリプトは下記のコードとなっています。
# --------------------------------------------------------------------
# -- Python スクリプトファイル
# -- 作成日: 2021/05/17 18:25:29
# -- 作成者: username
# -- コメント: .
# --------------------------------------------------------------------
import sys
if 'DIAdem' in sys.modules:
    from DIAdem import Application as dd
    if False:
        import DIAdem_CodeCompletion as dd
#    if dd.AppEnableScriptDebugger:
#        import debugpy
#        debugpy.configure(python = sys.prefix + '\\python.exe')
#        if not debugpy.is_client_connected():
#            try:
#                debugpy.listen(5678)
#            except:
#                pass
#            debugpy.wait_for_client()
# --------------------------------------------------------------------
# -- ユーザコードの始まり --
strCurrDate = dd.Str(dd.TTR(dd.CurrDate),"#YYYY/MM/DD") 
strCurrWeek = dd.Str(dd.TTR(dd.CurrDate),"#k") 
print(strCurrDate)
print(strCurrWeek)


3. Visual Studio Code
Visual Studio Codeを起動し、Open Folderから先に作成したPythonスクリプトを保存したフォルダを開きます。
 
003openfol.png

フォルダ選択後、Activity BarのRunアイコンを使用して、Debug side barを開きます。Debug side barで、To customize Run and Debug, open a folder and create a launch.json fileのリンクをクリックします。
Remote Attachを選択し、ホスト名(localhost)とポート番号(5678)を設定します。
 
004vbc.png

上記手順を完了するとVisual Studio Codeがlaunch.jsonファイルを開きます。remoteRootの行を以下に変更します。launch.jsonファイルを保存します。
"remoteRoot": "${workspaceFolder}"
005remoteroot.png

Visual Studio Codeは開いた状態を維持し、DIAdemスクリプトを開きます。


 

DIAdemからVisual Studio Codeを使用したスクリプトのデバッグ

1. DIAdem SCRIPTで先ほど作成したPythonスクリプトを開きます。
ツールバーの外部デバッガを使用をクリックします。また、デバッグの際に停止させたい行を選択し、コマンドバーでブレークポイントを挿入 (F9) をクリックし、debugpy.breakpoint()を挿入します。行if dd.AppEnableScriptDebugger以降からコメント文字を削除します。複数行のコメント文字を削除する際は、それらの行を選択し、Ctrl + Shit + Dで解除できます。ここまでの変更内容を保存します。
 
006scrit.png

2. スクリプトの実行とVisual Studio Codeでのデバッグ
DIAdemでスクリプトを実行します。外部デバッガを使用が有効となった状態でスクリプトを実行すると、Visual Studio CodeにおいてDisconnectが行われるまではDIAdemはフリーズした状態となります。

3. Visual Studio Codeでスクリプトをデバッグ
Visual Studio CodeでRun→Start Debuggingを行い、Visual Studio Codeでファイルをロードしてデバッグします。ブレークポイントを設定したり、スクリプトを1ステップずつ処理したり、その他のデバッグ機能を使用したりできます。デバッグ終了後、Disconnectを選択するとDIAdemを操作できるようになります。
 
008debug2.png

初回に上記の手順にてRemote Attachの設定とJSONファイルの作成を行っている場合、2度目以降はVisual Studio Codeで既に設定を行ったPythonスクリプトの保存されているフォルダを開く事でVisual Studio Codeによるデバッグを使用できます。