PL/SQLデバッガがSQL Developer for VS Codeで使用可能に (2024/10/08)

PL/SQLデバッガがSQL Developer for VS Codeで使用可能に (2024/10/08)

https://www.thatjeffsmith.com/archive/2024/10/pl-sql-debugger-now-available-in-sql-developer-for-vs-code/

VS Code用のOracle拡張機能のバージョン24.3がマーケットプレイスから提供されました。



タイトルが示すように、24.3のショーケース機能は、PL/SQLプログラムのデバッグをサポートしています。


はい、今ここにあります。


しかし、それだけではありません、ここでは、他の利用可能なものを見てみましょう(完全な変更ログ!)


新機能


  • コード書式設定プリファレンス
  • 選択したテキストの書式設定(すべてと比較)
  • 拡張実行計画
  • タスク・モニター
  • JSONリレーショナル二面性ビューおよびビルダーの追加機能


バグ修正


  • 複数のpl/sqlオブジェクトをオープンできます。
  • DESCRIPTION_LISTSを使用したTNSNamesファイルが動作するようになりました
  • グリッドからクリップボードにコピーすると、文字列は引用符で囲まれません
  • %rowtypeを返す場合、関数がランナーによってプロシージャとして扱われません
  • 表の参照時に誤った順序で表示される列



PL/SQLデバッガの概要


これは、PL/SQLプログラムを開き、ブレークポイントを設定し、コードを実行し、コードをステップ・オーバーし、変数の値を監視し、他のプログラムにステップ・インし、コール・スタックを監視し、出力を確認する機能を備えた、VS Code拡張機能の最初のリリースです。


前提条件


  • デバッグするプログラム上のexec権限
  • DEBUG CONNECT SESSION権限が付与されます。
  • データベースからVS Codeクライアントへのネットワーク・パス


つまり、Java Debug Wire Protocol (JDWP)を使用しています。このプロトコルには、デバッグ接続リクエストを許可するためのデータベースのアクセス制御リスト(ACL)の管理方法について説明した多くの投稿があります。


PL/SQLデバッグ用のACLをソートするためのアドバイス




コードをデバッグしよう!


まずは簡単なコード。HRスキーマへのアクセス権があるか、またはHRスキーマを介して自分のやり方を偽造できると仮定します。次に、TYPEと2つのプロシージャがあり、一方がもう一方をコールします。


TYPEは配列であり、プロシージャは配列に一括収集し、いくつかのループを実行し、データをカーソルに入れ、最後に旧友のDBMS_OUTPUTが数回ポップアップします。


コード


create or replace type array_jobs is varray(150) of varchar2(100);
/

create or replace procedure debugging_step_into (how_many in integer) IS
 cursor demo_debug is select * from employees fetch first how_many rows only;
 fullname varchar2(100);
BEGIN
    for counter in demo_debug LOOP
     fullname := counter.first_name || ' ' || counter.last_name;
     dbms_output.put_line(counter.employee_id || ' name is ' || fullname);
     fullname := '';
    end loop;
END debugging_step_into;
/

create or replace procedure debugging_debugger (x in integer) is
 y boolean := true;
 z date := sysdate;
 jobs_a array_jobs;
begin

  select distinct job_title 
  bulk collect into jobs_a
  from hr.jobs
  order by 1; 

 for i in 1..x LOOP
   DBMS_OUTPUT.PUT_LINE('Job #' || i || ' is ' || jobs_a(i));
 END LOOP;

 DEBUGGING_STEP_INTO(x);
 null; -- placeholder 
end;
/


はい、コードはシンプルですが、PL/SQLにいないほど素晴らしいデバッガではなく、デバッガを表示するためにここにいます。


これらの3つのPL/SQLユニットをコンパイルする際は、デバッグのCOMPILEに注意してください。


赤いバグがついたコンパイルボタンです




デバッガの起動


ファイルまたはpl/sqlプログラムをデータベース(特にDEBUGGING_DEBUGGER)から直接開きます。ツリー内のプログラムをクリックします(または、VS Codeでワンクリックで開く設定を無効にした場合はダブルクリックします)。


オプションですが推奨: ブレークポイントを設定


実行可能なコード行を見つけ、左側の余白にカーソルを置き、クリックしてアクティブにしてブレークポイントをアクティブにします。赤い点が現れます。


クリックして追加します。


ブレークポイントを設定しない場合、デフォルトの動作では、ブレークポイントにヒットし、ブレークポイントがないと、プログラムが完了するまで実行されます。Boo、ブレークポイントを設定します。


プログラムを実行する代わりに、デバッグします。「実行」ボタンの新しいドロップダウン・オプションを確認します。




ポップアップは、私たちの「ランナー」コードブロックです。これは、実行する匿名PL/SQLで、問題のpl/sqlプログラムが実行されます。



プロシージャDEBUGGING_DEBUGGERには単一の入力'X'のみがあり、整数値が必要です。1から19までは大丈夫です。



ACLの表示


データベース内のアクセス制御リストの構成を支援します。「ACLの表示」ボタンをクリックすると、次のように表示されます。

データベースACLを設定するためのヘルパー


ダイアログに、コードの一部をクリップボードにコピーするために使用できる通知が出力されます。そのコードは、ACLを定義するのに十分なほど賢明です。


  • マシンのIPアドレスのリストを取得しています
  • You're Picking Oneシングル
  • JDWPのIPを開くためのANON pl/sqlブロックを生成します。


これを実行する場合は、デバッグのために、指定したポート範囲の指定されたIPアドレスに対してアウトバウンド・ネットワーク・リクエストを発行してもかまいません。適当に見えるように調整できます。DBMS_NETWORK_ACL_ADMINインタフェースではワイルドカード(*)を使用できますが、これらを慎重に使用してください。


あなた自身のプライベートリグで作業している開発者であれば、これは問題になりません。ITマネージド・データベースを使用している場合、この設定にはDBAが必要になる可能性があります。これは1回のみ言いますが、本番環境ではデバッグしないでください。



実際のデバッグ


デバッグボタンをクリックし、IPアドレスを選択すると、ネットワーク接続できる速度で起動します。私はここでビデオを遅らせたり、スピードアップしたりしていません- それは実際のランタイムです。


ステップオーバー- 次の行に移動します

Step Into– このユニットを開いてデバッグしましょう



デバッグ中に、更新されている呼び出しスタックを確認できます。変数パネルが移入されていることを確認できます。スカラーX、Y、およびIはすべて存在しますが、ユーザー定義のTYPEからの文字列のCURSORとARRAYも存在します。


2つ目のプログラムDEBUGGING_STEP_INTOに進むと、変数のスコープが変更されるため、ローカル・プログラムの環境が表示されるだけです。呼び出し側の手順に戻ると、再度更新されます。


終了すると、DBMS_OUTPUTが収集され、スクリプト出力パネルに表示されます。



デバッガー設定


各デバッグ・セッションの前にプロンプトを表示する必要はありません。VPNまたはStarbucks WiFiをオフにする場合、おそらくこの設定を有効にしたままにしておきます。



また、デバッグ用にPORT範囲を設定できるため、データベースACLで設定された内容を一致させることができます。

今後のデバッガー機能


  • 外部プロセスへのアタッチのサポート(APEXアプリ!)
  • TYPEのスタンドアロン・デバッグ
  • 条件付きブレークポイントまたはパス数の設定
  • 変数の値の変更


これらはすべて、今後の更新で追加するワークリストにあります。


今後のVSコード機能


我々は次のホッパーに持っているが、彼らはかなりカットしなかった。


  • 接続フォルダ
  • レポート
  • リアルタイムSQL監視


その多くは、暦年が2025年に達する前に提供できるはずです。


コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)