🔖

VSCodeでPostgreSQLをデバッグする

に公開

VSCodeでPostgreSQLをデバッグする

事前準備

・WSL2で環境構築する例
https://zenn.dev/dltk/articles/0947bd06c5b3db

VSCode Extension

VSCode Extensionに以下を入れる (Microsoftが配布しているExtension)

  • WSL
  • C/C++

LinuxサーバなどにSSHで接続してデバッグしたい場合はWSLの代わりにRemote - SSHをインストールする

デバッガの設定

PostgreSQLのソースディレクトリで、.vscode/launch.jsonを作成

設定例

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Attach to PostgreSQL (WSL)",
            "type": "cppdbg",
            "request": "attach",
            "program": "/home/pgsql/pgsql/bin/postgres", // postgres のパスを設定
            "processId": "${command:pickProcess}",
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                { "text": "-enable-pretty-printing" }
            ]
        }
    ]
}

breakpointの設定

ソースエディタで、デバッガで停止したい位置にブレークポイントをセットする (F9キーでブレークポイントをON/OFFできる)
SQLの実行を観察したい場合、exec_simple_queryなどで停止する

PostgreSQL起動

pg_ctlでPostgreSQLを起動し、psqlで接続
psqlで以下のSQLを実行し、バックエンドのPIDを取得

select pg_backend_pid();

VSCodeのデバッガでアタッチ

  1. 画面左のデバッグメニュー
    デバッグメニュー

  2. Attach to PostgreSQLを起動
    Attach to PostgreSQL

  3. バックエンドPIDを選択してアタッチ
    プロセス選択

  4. psqlでSQLを実行

select * from pg_class;
  1. 停止したらステップ実行などできる
    デバッグ実行画面
GitHubで編集を提案

Discussion