Publicité

VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)

NTT DATA Technology & Innovation
9 Jul 2021
Publicité

Contenu connexe

Présentations pour vous(20)

Similaire à VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)(20)

Publicité

Plus de NTT DATA Technology & Innovation(20)

Dernier(20)

Publicité

VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)

  1. © 2021 NTT DATA Corporation VSCodeで作るPostgreSQL開発環境 2021年7月6日 第25回PostgreSQLアンカンファレンス@オンライン 株式会社NTTデータ 技術開発本部 加藤 慎也
  2. © 2021 NTT DATA Corporation 2 自己紹介  名前 ‒ 加藤 慎也 @ShinyaKato_  所属 ‒ 株式会社NTTデータ 技術開発本部  経歴 ‒ 入社2年目社員 ‒ 第20回 PostgreSQLアンカンファレンス@オンラインで 「PostgreSQL初心者がパッチを提案してからコミットされるまで」を発表しました ‒ https://www.slideshare.net/nttdata-tech/postgresql-first-patch ‒ あたたかいコメントありがとうございました!
  3. © 2021 NTT DATA Corporation 3 YouTubeチャンネル “NTT DATA Tech” 技術取り組み、活用情報を中心にお届けします https://www.youtube.com/NTTDATATech
  4. © 2021 NTT DATA Corporation 4 VSCodeで作るPostgreSQL開発環境
  5. © 2021 NTT DATA Corporation 5 今回構築する環境のイメージ図 Windows 10 WSL (Ubuntu 20.04) PostgreSQL VSCode GUI デバッグ GDB ブレークポイント コールスタック 変数表示 動作環境 • Window 10 • 未確認ですがmacOSやLinuxでも構築できる と思います • WSL Ubuntu 20.04 LTS • PostgreSQL 14 Beta 1 • GDB 9.2 • Visual Studio Code 1.57
  6. © 2021 NTT DATA Corporation 6 モチベーション  なぜVSCodeか? ‒ 個人的に一番使いやすい ‒ GUIで直感的に操作でき、習得コストが低い  なぜデバッガを使うのか? ‒ PostgreSQLのような巨大なプログラムを目で追うのは大変 ‒ 実際のコードの実行の流れを追うことによって、PostgreSQLの 動く仕組みが理解できる ‒ なので、PostgreSQLを開発する人だけでなく、PostgreSQL内部を 知りたい人にもおすすめ
  7. © 2021 NTT DATA Corporation 7 準備 - WSLインストール  Microsoft StoreからUbuntu 20.04 LTSをインストール
  8. © 2021 NTT DATA Corporation 8 準備 - パッケージのインストール  PostgreSQLのインストールに必要なパッケージ  TAPテストに必要なパッケージをインストール  GDBのインストール $ sudo apt install gcc make flex libreadline-dev bison zlib1g-dev $ sudo apt install gdb $ sudo apt install libtest-simple-perl libtest-harness-perl libipc- run-perl
  9. © 2021 NTT DATA Corporation 9 準備 - PostgreSQLインストール  ソースコードをダウンロードし、コンパイル、インストール $ git clone http://git.postgresql.org/git/postgresql.git $ cd postgresql $ ./configure --enable-debug --enable-cassert --enable-tap-tests --prefix=/home/shinya/pgsql/master CFLAGS=-O0 $ make $ make install デバッグシンボル付きでコンパイル アサーションチェックを有効 Perl TAPツールを使ったテストを有効 コンパイル時の最適化をオフ インストール先を指定 デバッグしやすいように オプションを指定する
  10. © 2021 NTT DATA Corporation 10 準備 – PostgreSQL起動  DBクラスタを作成し、PostgreSQL起動 $ cd /home/shinya/pgsql/master $ bin/initdb –D data -–encoding=UTF8 –-no-locale $ bin/pg_ctl –D data start
  11. © 2021 NTT DATA Corporation 11 準備 - VSCodeインストール  公式サイトからダウンロード、インストール ‒ https://azure.microsoft.com/ja-jp/products/visual-studio-code/  以下の拡張機能をインストール ‒ Remote - WSL 0.56.5 ‒ C/C++ 1.4.1
  12. © 2021 NTT DATA Corporation 12 デバッグ手順  Ctrl+Shift+Pでコマンドパレットを開き、 「Remote-WSL: New WSL Window」をクリック  サイドバーの「Open Folder」をクリックし、 PostgreSQLをインストールしたフォルダを選択  Ctrl+Shift+@でターミナルを起動  PostgreSQLに接続 ‒ $ bin/psql postgres  バックエンドのプロセスIDを確認 ‒ =# SELECT pg_backend_pid();  F5を押しC++(GDB/LLDB)を選択すると、launch.jsonが作成される  launch.jsonを記述し、F5を押すとデバッグが開始
  13. © 2021 NTT DATA Corporation 13 launch.json  デバッグ設定を記述 { "version": "0.2.0", "configurations": [ { "name": "postgres", "type": "cppdbg", "request": "attach", "program": "${workspaceFolder}/bin/postgres", "processId": 1172, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb" } ] } 任意の名前を設定 デバッガのタイプを設定 プロセスをアタッチする場合、attachを設定 使用するデバッガ(gdbまたはlldb)を設定 プログラムの場所を設定 アタッチするプロセスのプロセスIDを設定 デバッガのパスを設定
  14. © 2021 NTT DATA Corporation 14 launch.json(マルチプロセス)  デバッグ設定を記述 { "version": "0.2.0", "configurations": [ { "name": "postgres", "type": "cppdbg", "request": "attach", "program": "${workspaceFolder}/bin/postgres", "processId": 1172, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", }, { "name": "checkpointer", "type": "cppdbg", "request": "attach", "program": "${workspaceFolder}/bin/postgres", "processId": 830, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", } ], "compounds": [ { "name": "postgres/checkpointer", "configurations": ["postgres", "checkpointer"] } ] } アタッチするプロセスの情報を記述 同時にデバッグするプロセスの名前を列挙
  15. © 2021 NTT DATA Corporation 15 デバッグの開始 ブレークポイント コールスタック 変数表示 ターミナル デバッグコンソール F5:続行 F10:ステップオーバ F11:ステップイン Shift+F11:ステップアウト
  16. © 2021 NTT DATA Corporation 16 ハマったところ  プロセスにアタッチするのが失敗 ‒ デフォルトではptraceシステムコールでプロセスにアタッチできないようになっている ‒ 一時的にアタッチできるようにする ‒ $ echo 0 > /proc/sys/kernel/yama/ptrace_scope ‒ 永続的にアタッチできるようにする ‒ /etc/sysctl.d/10-ptrace.conf の kernel.yama.ptrace_scope=0 に変更  シグナルが送られてGDBが止まってしまう ‒ シグナルを無視するようにGDBを設定 ‒ ~/.gdbinit に以下を書いておく ‒ handle SIGUSR1 nostop noprint pass ‒ handle SIGINT nostop noprint pass
  17. © 2021 NTT DATA Corporation 17 まとめ  VSCodeでPostgreSQLの開発をしましょう!
  18. © 2021 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。

Notes de l'éditeur

  1. 情報発信については、NTT DATA Tech という YouTubeチャンネルを開設しました。 10月に開催したNTTデータ テクノロジーカンファレンスの模様や 技術トピックの解説映像などを、順次公開していきます。 こちらもあわせてご覧ください。
Publicité