Skip to content
Go back

DuckLake デバッグ備忘録

はじめに

duckdbのエクステンション、ducklakeをローカルで開発・デバッグする際の備忘録。

PRを出す際に探り探りでやっていたので、次回以降のために記録を残しておく。

参考資料

以下は一読すると良い:

debug ビルドの作成

ducklakeをクローンして、git submoduleを初期化し、debugビルドを作成する:

git submodule update --init --recursive # 初回のみ
GEN=ninja make debug

差分を反映するには再ビルドが必要となるので、ソースを修正したらGEN=ninja make debug でデバッグビルドを更新する。

テスト実行

buildをすると、テストを実行できるプログラムが build/debug/test/unittest に生成される。

テストは以下のように実行する:

./build/debug/test/unittest test/sql/merge/merge_partition_update.test

より細かいテストの流し方

VSCode で デバッグ

launch.jsonを設定して、VSCodeのデバッガでDuckLakeのソースコードをステップ実行できるようにする。

記事を参考に作成:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(lldb) test_simple_projection",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/build/debug/test/unittest",
      "args": ["test/sql/merge/merge_partition_update.test"],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "MIMode": "lldb",
      "externalConsole": false
    }
  ]
}.vscode/launch.json

SQLテストは単スレッドで走らせるとデバッグしやすい。どうやらデフォルトでは並列スレッドで実行されるようなので、いちいちスレッドが切り替わってしまい、デバッグが困難になる。


Share this post on:

Next Post
Git rerere (Reuse Recorded Resolution) テクニックとヒント