Visual Studio Codeを使ったデバッガ導入とデバッグ実行


# Ubuntu編
- Ubuntuでデバッガを導入する。

##環境

 - Ubuntu 20.04LTS

##Visual Studio Codeのインストール
  - [Visual Studio Code](https://code.visualstudio.com/Download)のインストールを行う。

  - VSCodeの拡張機能を入れる。
      - 今回はC/C++のため[C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)を導入
        
##デバッグオプション
- デバッグオプションをつけてもう一度`cmake` を実行。
  
-  ```shell
            $ cd ~/Downloads
            $ chmod 755 install_dependencies.txt
            $ ./install_dependencies.txt --full
            $ mkdir ~/sushi && cd ~/sushi # クローン先のディレクトリへ移動
            $ git clone https://gitlab.com/inkscape/inkscape
            $ cd inkscape
            $ git submodule update --init --recursive
            $ mkdir build && cd build
            $ cmake -DCMAKE_INSTALL_PREFIX=(prefixを指定) -DCMAKE_BUILD_TYPE=Debug .. # デバッグオプションをつける
            $ make 
            $ make install
       ```

# mac編
- macでデバッガを導入する。

##環境

 - macOS Catalina 10.15.7

##Visual Studio Codeのインストール
  - Ubuntu編と同様[Visual Studio Code](https://code.visualstudio.com/Download)のインストール、拡張機能の導入を行う。
  - 追加で拡張機能[CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb)を入れる
  - 以下のコマンドを実行

```bash
mkdir .vscode
touch .vscode/launch.json
touch .vscode/tasks.json
```

- jsonファイルを編集

```tasks.json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "clang++ build active file",
      "type": "shell",
      "command": "clang++",
      "args": ["${fileBasename}", "-o", "${fileBasenameNoExtension}.out", "-g"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}
```

  
##デバッグオプション
- デバッグオプションをつけてもう一度`cmake` を実行。
  
-  ```shell
            $ cd ~/Downloads
            $ chmod 755 install_dependencies.txt
            $ ./install_dependencies.txt --full
            $ mkdir ~/sushi && cd ~/sushi # クローン先のディレクトリへ移動
            $ git clone https://gitlab.com/inkscape/inkscape
            $ cd inkscape
            $ git submodule update --init --recursive
            $ mkdir build && cd build
            $ cmake -DCMAKE_INSTALL_PREFIX=(prefixを指定) -DCMAKE_BUILD_TYPE=Debug .. # デバッグオプションをつける
            $ make 
            $ make install
       ```

#デバッグ

##VSCode上でデバッグ実行
  - VSCodeの虫のボタンをクリックしてデバッグモードに
      - VSCodeではデバッグシンボルをつけずにデバッグするとそもそもRun出来ない。
  - デバッグの際生成されるlaunch.jsonは以下のように設定する。
  - Ubuntu

  - ```launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 起動",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/install/bin/inkscape",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "gdb の再フォーマットを有効にする",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}
      ```

  - mac

  - ```launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "lldb",
            "request": "launch",
            "program": "${workspaceFolder}/build/install/bin/inkscape",
            "args": ["-arg1", "-arg2"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "gdb の再フォーマットを有効にする",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}
      ```

- ブレークポイントを設定し、Runボタンでデバッグを実行できる。