記事
· 2021年2月19日 4m read

VSCode:プロセスにアタッチしてデバッグする方法

開発者の皆さん、こんにちは!

VSCode の ObjectScript エクステンションで、プロセスにアタッチしてデバッグする方法についてご紹介します。

ObjectScript エクステンションの基本的な操作方法については、こちらの記事をぜひご参照ください。

解説ビデオ(4分ちょっと)もあります。ぜひご参照ください。

https://www.youtube.com/embed/NBITqPlMf1M
[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。]

 

手順1:launch.json の用意

VSCode のデバッグ実行に関連する各種の構成情報を記述するための launch.json に ObjectScript エクステンション用の設定を記述します。

(ビデオだと、最初~1:31 で解説しています)

プロセスにアタッチするデバッグ設定例は以下の通りです。

{

    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "objectscript",
            "request":"attach",
            "name": "Debugテスト",
            "processId":"${command:PickProcess}",
            "system": true
        }
    ]
}

 

手順2:デバッグ対象コード の用意

例) 第 1 引数:文字列(値渡し)、第 2 引数:参照渡しで配列変数、戻り値に文字列を返すクラスメソッド

(ビデオだと、1:31~1:55 でコードを解説しています)

Class Test.Debug
{
ClassMethod Hello(name As %String, ByRef val As %String) As %String
{
    #dim ex As %Exception.AbstractException
    set modori=""
    try {
        set modori="入力された名前は:"_name
        write "こんにちは",name,"さん",!
        set sub="",count=1
        for {
            set sub=$order(val(sub))
            if sub="" {
                set modori=modori_$CHAR(13,10)_"サブスクリプト指定数="_count
                return modori
            }
            write sub," - ",val(sub),!
            set count=count+1
        }
    }
    catch ex {
        set modori="エラー:"_ex.DisplayString()
    }
    return modori
}
}

 

手順3:アタッチ方法

VSCode のデバッグメニューを利用して指定のプロセスにアタッチします。

(ビデオだと、2:02~2:27 で解説しています)

 

 

手順4:実行対象プロセスで実行準備

例)ターミナルプロセスを利用する場合の準備(IRIS の USER ネームスペースにログインした状態。手順 2 のクラス定義も USER ネームスペースに保存済であるとします。)

ターミナル実行例では、第 2 引数に指定する参照渡しの配列変数を作成しています(サブスクリプトやデータは任意で設定してください)。

実行対象プロセスの PID を調べるには、特殊変数 $JOB を利用します。

(ビデオだと、2:31~2:54 で解説しています)

USER>set moji("Address")="東京都新宿区"

USER>set moji("Email")="taro@mail.com"

USER>set moji("Tel")="03-5321-6200"

USER>write $job
2770

 

手順5:デバッグ実行!

準備が完了したら、確認したプロセスにアタッチしてデバッグを実行します。

(ビデオだと、2:54~ で解説しています)

 

デバッグを終了するときは、 赤の囲い   の部分をクリックします。

 

ぜひお試しください!

ディスカッション (2)1
続けるにはログインするか新規登録を行ってください

IRISスタジオのデバッカより良いかも。

わざわざウォッチ式に変数名を追加しなくても、変数ペインに全ての変数が表示されてる。

さらに、クラスインスタンスのプロパティ値も表示されてる。

最高!