Skip to content

Instantly share code, notes, and snippets.

@ritalin
Last active November 5, 2023 04:44
Show Gist options
  • Save ritalin/056670bc5d6c200cb84bbf2221b7de83 to your computer and use it in GitHub Desktop.
Save ritalin/056670bc5d6c200cb84bbf2221b7de83 to your computer and use it in GitHub Desktop.
vscode-lldb によるzig言語のunit testのデバッグ

はじめに

基本方針は、以下のサイトのコメントをもとにパスを減らす方法を模索。

https://zig.news/jarredsumner/setting-up-visual-studio-code-for-writing-zig-kcj#comment-66

準備

  1. unit testのビルドのみを行うようbuild.zigを構成する。
    const unit_tests = b.addTest(.{
        .root_source_file = .{ .path = "src/main.zig" },
        .target = target,
        .optimize = optimize,
    });
    const test_build_step = b.step("test-build", "Build unit tests");
    test_build_step.dependOn(&unit_tests.step);
  1. zig-cacheに作成されたビルド成果物のパスをlaunch.jsonに渡せるようにする。

以下はvscodeの機能拡張、Tasks Shell Inputを使用した一例。

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug unit test test",
            "program": "${input:findTestPath}",
            "args": [],
        }
    ],
    "inputs": [
        {
            "id": "findTestPath",
            "type": "command",
            "command": "shellCommand.execute",
            "args": { 
                // マルチルートワークスペースのためルートパスを明示的に指定
                "command": "ls -1t ${workspaceFolder[3]}/zig-cache/o/*/test | head -n 1", 
            }
        }
    ]
}
  1. ユニットテストのビルドを行う
zig build build-test
  1. vscodeでデバッグプロセスを開始する

見つかった成果物のパスがプロンプトとして表示されるため、Enterキー押して先に進める

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment