開発者の皆さん、こんにちは!
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~ で解説しています)
デバッグを終了するときは、 赤の囲い 〇 の部分をクリックします。
ぜひお試しください!
IRISスタジオのデバッカより良いかも。
わざわざウォッチ式に変数名を追加しなくても、変数ペインに全ての変数が表示されてる。
さらに、クラスインスタンスのプロパティ値も表示されてる。
最高!
ご覧いただきありがとうございます!
私もそう思いました!(ウォッチに書かなくても出てくるラクチンさ)