mcpField
D
debugging-tauri-apps

debugging-tauri-apps

github.com/dchuk開発36231 回インストール40 週間前に更新
リポジトリ

debugging-tauri-apps について

Tauri v2 開発者向けのデバッグガイドです。WebView の検査、Rust の出力、IDE の設定、CrabNebula DevTools を取り上げ、エディター別の手順と問題解決方法を示します。

主な機能

  1. 01WebView 開発者ツールの確認
  2. 02Rust のバックトレースとデバッグ出力
  3. 03VS Code、RustRover、Neovim の設定
  4. 04CrabNebula DevTools によるログとイベント分析
  5. 05ブレークポイントと開発サーバーの問題解決

活用シーン

  1. 01Tauri アプリのフロントエンドコンソール確認
  2. 02Rust のブレークポイントと IDE デバッグ設定
  3. 03コマンド実行時間とイベントペイロードの分析
  4. 04デバッガーで停止しない問題の解決

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dchuk/claude-code-tauri-skills --skill debugging-tauri-apps

インストール後、Claude Code で/debugging-tauri-appsを入力して読み込まれたか確認します。

詳細

Tauri アプリケーションのデバッグ

このスキルでは、コンソールデバッグ、WebView の検査、IDE の設定、CrabNebula DevTools など、Tauri v2 アプリケーションのデバッグ方法を説明します。

開発時のみ使用するコード

条件付きコンパイルを使って、デバッグコードを本番ビルドから除外します。

// Only runs during `tauri dev`
#[cfg(dev)]
{
    // Development-only code
}

// Runtime check
if cfg!(dev) {
    // tauri dev code
} else {
    // tauri build code
}

// Programmatic check
let is_dev: bool = tauri::is_dev();

// Debug builds and `tauri build --debug`
#[cfg(debug_assertions)]
{
    // Debug-only code
}

コンソールデバッグ

Rust の出力マクロ

tauri dev を実行しているターミナルにメッセージを出力します。

println!("Message from Rust: {}", msg);
dbg!(&variable);  // Prints variable with file:line info
バックトレースの有効化

エラーの詳細情報を表示します。

# Linux/macOS
RUST_BACKTRACE=1 tauri dev

# Windows PowerShell
$env:RUST_BACKTRACE=1
tauri dev

WebView DevTools

DevTools を開く
  • 右クリックして「要素を検証」を選択します
  • Ctrl + Shift + i(Linux/Windows)
  • Cmd + Option + i(macOS)

プラットフォーム固有のインスペクター:WebKit(Linux)、Safari(macOS)、Edge DevTools(Windows)。

プログラムによる制御
tauri::Builder::default()
    .setup(|app| {
        #[cfg(debug_assertions)]
        {
            let window = app.get_webview_window("main").unwrap();
            window.open_devtools();
            // window.close_devtools();
        }
        Ok(())
    })
本番環境での DevTools

テスト用のデバッグビルドを作成します。

tauri build --debug

本番環境で DevTools を永続的に有効にするには、src-tauri/Cargo.toml に追加します。

[dependencies]
tauri = { version = "...", features = ["...", "devtools"] }

WARNING: devtools 機能を使うと、App Store での審査を妨げる非公開の macOS API が有効になります。


VS Code のセットアップ

必要な拡張機能
拡張機能プラットフォーム用途
vscode-lldbすべてLLDB デバッガー
C/C++WindowsVisual Studio デバッガー
launch.json の設定

.vscode/launch.json を作成します。

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "lldb",
      "request": "launch",
      "name": "Tauri Development Debug",
      "cargo": {
        "args": [
          "build",
          "--manifest-path=./src-tauri/Cargo.toml",
          "--no-default-features"
        ]
      },
      "preLaunchTask": "ui:dev"
    },
    {
      "type": "lldb",
      "request": "launch",
      "name": "Tauri Production Debug",
      "cargo": {
        "args": [
          "build",
          "--release",
          "--manifest-path=./src-tauri/Cargo.toml"
        ]
      },
      "preLaunchTask": "ui:build"
    }
  ]
}
Windows Visual Studio デバッガー

列挙型のサポートを強化し、Windows でより高速にデバッグするには、次のようにします。

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch App Debug",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "${workspaceRoot}/src-tauri/target/debug/your-app-name.exe",
      "cwd": "${workspaceRoot}",
      "preLaunchTask": "dev"
    }
  ]
}
tasks.json の設定

.vscode/tasks.json を作成します。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "ui:dev",
      "type": "shell",
      "isBackground": true,
      "command": "npm",
      "args": ["run", "dev"]
    },
    {
      "label": "ui:build",
      "type": "shell",
      "command": "npm",
      "args": ["run", "build"]
    },
    {
      "label": "build:debug",
      "type": "cargo",
      "command": "build",
      "options": {
        "cwd": "${workspaceRoot}/src-tauri"
      }
    },
    {
      "label": "dev",
      "dependsOn": ["build:debug", "ui:dev"],
      "group": {
        "kind": "build"
      }
    }
  ]
}
デバッグのワークフロー
  1. Rust ファイルの行番号の余白をクリックして、ブレークポイントを設定します
  2. F5 を押すか、「実行」メニューからデバッグ構成を選択します
  3. preLaunchTask によって開発サーバーが自動的に起動します
  4. デバッガーがアタッチされ、ブレークポイントで停止します

NOTE: LLDB は Tauri CLI を経由しないため、beforeDevCommand と beforeBuildCommand をタスクとして設定する必要があります。


RustRover/IntelliJ のセットアップ

プロジェクトの設定

プロジェクトのトップレベルに Cargo.toml がない場合は、ワークスペースファイルを作成します。

[workspace]
members = ["src-tauri"]

または、Cargo ツールウィンドウから src-tauri/Cargo.toml をアタッチします。

実行構成

実行 | 構成の編集で、次の2つの構成を作成します。

1. Tauri アプリケーションの構成(Cargo)
  • コマンド:run
  • 追加の引数:--no-default-features

--no-default-features フラグは重要です。バンドルされたアセットではなく、開発サーバーからアセットを読み込むよう Tauri に指示します。

2. 開発サーバーの構成

Node ベースのプロジェクトの場合:

  • npm の実行構成を作成します
  • パッケージマネージャー(npm/pnpm/yarn)を設定します
  • スクリプトに dev を設定します

Rust WASM(Trunk)の場合:

  • シェルスクリプト構成を作成します
  • コマンド:trunk serve
デバッグのワークフロー
  1. まず開発サーバーの構成を起動します
  2. Tauri アプリケーションの構成で「デバッグ」をクリックします
  3. RustRover が Rust のブレークポイントで自動的に停止します
  4. 変数を確認し、コードをステップ実行します

Neovim のセットアップ

必要なプラグイン
  • nvim-dap - Debug Adapter Protocol クライアント
  • nvim-dap-ui - デバッガー UI
  • nvim-nio - nvim-dap-ui の非同期依存関係
  • overseer.nvim(推奨)- タスク管理
前提条件

GitHub のリリースから codelldb をダウンロードし、インストール先のパスを控えます。

DAP の設定

Neovim の設定(init.lua など)に追加します。

local dap = require("dap")

-- Configure codelldb adapter
dap.adapters.codelldb = {
  type = 'server',
  port = "${port}",
  executable = {
    command = '/path/to/codelldb/adapter/codelldb',
    args = {"--port", "${port}"},
  }
}

-- Launch configuration for Rust/Tauri
dap.configurations.rust = {
  {
    name = "Launch Tauri App",
    type = "codelldb",
    request = "launch",
    program = function()
      return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/target/debug/', 'file')
    end,
    cwd = '${workspaceFolder}',
    stopOnEntry = false
  },
}
UI の統合
local dapui = require("dapui")
dapui.setup()

-- Auto-open/close UI
dap.listeners.before.attach.dapui_config = function()
  dapui.open()
end
dap.listeners.before.launch.dapui_config = function()
  dapui.open()
end
dap.listeners.before.event_terminated.dapui_config = function()
  dapui.close()
end
dap.listeners.before.event_exited.dapui_config = function()
  dapui.close()
end
視覚的なインジケーター
vim.fn.sign_define('DapBreakpoint', {
  text = 'B',
  texthl = 'DapBreakpoint',
  linehl = '',
  numhl = ''
})
vim.fn.sign_define('DapStopped', {
  text = '>',
  texthl = 'DapStopped',
  linehl = 'DapStopped',
  numhl = ''
})
キーバインド
vim.keymap.set('n', '<F5>', function() dap.continue() end)
vim.keymap.set('n', '<F6>', function() dap.disconnect({ terminateDebuggee = true }) end)
vim.keymap.set('n', '<F10>', function() dap.step_over() end)
vim.keymap.set('n', '<F11>', function() dap.step_into() end)
vim.keymap.set('n', '<F12>', function() dap.step_out() end)
vim.keymap.set('n', '<Leader>b', function() dap.toggle_breakpoint() end)
vim.keymap.set('n', '<Leader>o', function() overseer.toggle() end)
vim.keymap.set('n', '<Leader>R', function() overseer.run_template() end)
開発サーバーのタスク

overseer.nvim との互換性のために .vscode/tasks.json を作成します。

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "process",
      "label": "dev server",
      "command": "npm",
      "args": ["run", "dev"],
      "isBackground": true,
      "presentation": {
        "revealProblems": "onProblem"
      },
      "problemMatcher": {
        "pattern": {
          "regexp": "^error:.*",
          "file": 1,
          "line": 2
        },
        "background": {
          "activeOnStart": false,
          "beginsPattern": ".*Rebuilding.*",
          "endsPattern": ".*listening.*"
        }
      }
    }
  ]
}

NOTE: Tauri CLI を経由しない場合、開発サーバーは自動的に起動しません。overseer.nvim を使うか、手動で起動してください。


CrabNebula DevTools

CrabNebula DevTools は、ログの検査、パフォーマンスの監視、Tauri のイベント/コマンドの分析など、アプリケーションをリアルタイムで計測する機能を提供します。

機能
  • ログイベントを調査します(依存関係のログを含む)
  • コマンド実行のパフォーマンスを監視します
  • ペイロードとレスポンスを含む Tauri イベントを分析します
  • リアルタイムで可視化します
インストール
cargo add [email protected]
セットアップ

src-tauri/src/main.rs で、できるだけ早い段階に DevTools を初期化します。

fn main() {
    // Initialize DevTools only in debug builds
    #[cfg(debug_assertions)]
    let devtools = tauri_plugin_devtools::init();

    let mut builder = tauri::Builder::default();

    #[cfg(debug_assertions)]
    {
        builder = builder.plugin(devtools);
    }

    builder
        .run(tauri::generate_context!())
        .expect("error while running tauri application")
}
使用方法

tauri dev の実行時に、DevTools が以下を表示する Web ベースのインターフェースを自動的に開きます。

  • フィルタリング可能なアプリケーションログ
  • タイミング情報付きの IPC コマンド呼び出し
  • イベントのペイロードとレスポンス
  • パフォーマンススパン

詳細なドキュメントについては、CrabNebula DevTools のドキュメントを参照してください。


クイックリファレンス

タスクコマンド/操作
バックトレースを有効にするRUST_BACKTRACE=1 tauri dev
WebView DevTools を開くCtrl+Shift+i / Cmd+Option+i
デバッグビルドtauri build --debug
DevTools プラグインを追加するcargo add [email protected]
IDE の比較
機能VS CodeRustRoverNeovim
拡張機能/プラグインvscode-lldb組み込みnvim-dap + codelldb
Windows の代替cppvsdbg組み込みcodelldb
タスクランナーtasks.json実行構成overseer.nvim
セットアップの複雑さ中低高
よくある問題
  1. ブレークポイントで停止しない:ビルド時に --no-default-features が設定されていることを確認してください
  2. 開発サーバーが起動しない:preLaunchTask を設定するか、手動で起動してください
  3. アプリでフロントエンドが読み込まれない:Tauri アプリの起動前に開発サーバーを起動しておく必要があります
  4. Windows で enum の表示に問題がある:LLDB の代わりに cppvsdbg を使用してください

コメント