Symbol サーバをデバッガ上で実行

gdb インストール

gdb が入っていないと思うので、インストールします。

sudo apt install -y gdb

タスクの追加

デバッグ前にビルドと server.lock ファイルを削除するタスクを .vscode/tasks.json に追加します。

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "Symbol 構成",
            "command": "ninja publish",
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "dependsOn": [
                "CMake: 構成"
            ],
            "problemMatcher": [],
            "detail": "ビルド前の `ninja publish` コマンド"
        },
        {
            "type": "shell",
            "label": "CMake: デバッグ前ビルド",
            "command": "rm -rf server.lock",
            "options": {
                "cwd": "${workspaceFolder}/build/data"
            },
            "dependsOn": [
                "CMake: ビルド"
            ],
            "problemMatcher": [],
            "detail": "デバッグ前の server.lock 削除"
        },
    ]
}

デバッグ構成の作成

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

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Symbol サーバー デバッグ",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/build/bin/catapult.server",
            "args": [],
            "environment": [],
            "cwd": ".",
            "stopAtEntry": false,
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/usr/bin/gdb",
            "preLaunchTask": "CMake: デバッグ前ビルド",
        }
    ]
}

デバッグ

実行とデバッグから作成した構成を選択して、実行ボタンを押すとデバッグ実行出来ます。

ブレークポイントも機能します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です