SlideShare a Scribd company logo
9
Most read
12
Most read
13
Most read
© 2021 NTT DATA Corporation
VSCodeで作るPostgreSQL開発環境
2021年7月6日 第25回PostgreSQLアンカンファレンス@オンライン
株式会社NTTデータ 技術開発本部
加藤 慎也
© 2021 NTT DATA Corporation 2
自己紹介
 名前
‒ 加藤 慎也 @ShinyaKato_
 所属
‒ 株式会社NTTデータ 技術開発本部
 経歴
‒ 入社2年目社員
‒ 第20回 PostgreSQLアンカンファレンス@オンラインで
「PostgreSQL初心者がパッチを提案してからコミットされるまで」を発表しました
‒ https://www.slideshare.net/nttdata-tech/postgresql-first-patch
‒ あたたかいコメントありがとうございました!
© 2021 NTT DATA Corporation 3
YouTubeチャンネル “NTT DATA Tech”
技術取り組み、活用情報を中心にお届けします
https://www.youtube.com/NTTDATATech
© 2021 NTT DATA Corporation 4
VSCodeで作るPostgreSQL開発環境
© 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
© 2021 NTT DATA Corporation 6
モチベーション
 なぜVSCodeか?
‒ 個人的に一番使いやすい
‒ GUIで直感的に操作でき、習得コストが低い
 なぜデバッガを使うのか?
‒ PostgreSQLのような巨大なプログラムを目で追うのは大変
‒ 実際のコードの実行の流れを追うことによって、PostgreSQLの
動く仕組みが理解できる
‒ なので、PostgreSQLを開発する人だけでなく、PostgreSQL内部を
知りたい人にもおすすめ
© 2021 NTT DATA Corporation 7
準備 - WSLインストール
 Microsoft StoreからUbuntu 20.04 LTSをインストール
© 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
© 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ツールを使ったテストを有効
コンパイル時の最適化をオフ
インストール先を指定
デバッグしやすいように
オプションを指定する
© 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
© 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
© 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を押すとデバッグが開始
© 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を設定
デバッガのパスを設定
© 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"]
}
]
}
アタッチするプロセスの情報を記述
同時にデバッグするプロセスの名前を列挙
© 2021 NTT DATA Corporation 15
デバッグの開始
ブレークポイント
コールスタック
変数表示
ターミナル デバッグコンソール
F5:続行
F10:ステップオーバ
F11:ステップイン
Shift+F11:ステップアウト
© 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
© 2021 NTT DATA Corporation 17
まとめ
 VSCodeでPostgreSQLの開発をしましょう!
© 2021 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

What's hot (20)

PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PPTX
Dockerからcontainerdへの移行
Akihiro Suda
 
PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
PDF
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
 
PDF
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
NTT DATA Technology & Innovation
 
PDF
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
PDF
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
PDF
Dockerからcontainerdへの移行
Kohei Tokunaga
 
PPTX
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PDF
DockerとPodmanの比較
Akihiro Suda
 
PPTX
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Akihiro Suda
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
 
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
NTT DATA Technology & Innovation
 
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Kohei Tokunaga
 
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
DockerとPodmanの比較
Akihiro Suda
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 

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

PDF
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PDF
【Jpug勉強会】10大ニュースで振り返るpg con2013
Daichi Egawa
 
PDF
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
NTT DATA Technology & Innovation
 
PDF
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
NTT DATA Technology & Innovation
 
PDF
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
 
PPTX
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
VirtualTech Japan Inc.
 
PPTX
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
 
PPTX
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PPTX
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
 
PPTX
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
Daichi Egawa
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
NTT DATA Technology & Innovation
 
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
NTT DATA Technology & Innovation
 
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
 
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
VirtualTech Japan Inc.
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
Ad

More from NTT DATA Technology & Innovation (20)

PDF
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
PDF
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
PDF
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
PDF
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
PDF
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PDF
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
PDF
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
PDF
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
PDF
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
PDF
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
Ad

Recently uploaded (8)

PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
2023年版Web3技術の理想と現実
Syuhei Hiya
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PPTX
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PPTX
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
PDF
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
2023年版Web3技術の理想と現実
Syuhei Hiya
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 

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 その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。

Editor's Notes

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