{
    // 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": "Debug salmanoff (Basic)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/b/salmanoff",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/b",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set disassembly flavor to intel",
                    "text": "set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build-salmanoff",
            "miDebuggerPath": "/usr/bin/gdb"
        },
        {
            "name": "Debug salmanoff (Help)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/b/salmanoff",
            "args": ["--help"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/b",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build-salmanoff",
            "miDebuggerPath": "/usr/bin/gdb"
        },
        {
            "name": "Debug salmanoff (Verbose)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/b/salmanoff",
            "args": ["--verbose"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/b",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build-salmanoff",
            "miDebuggerPath": "/usr/bin/gdb"
        },
        {
            "name": "Debug salmanoff (Custom Args)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/b/salmanoff",
            "args": ["--devicespec", "test_device", "--verbose"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/b",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build-salmanoff",
            "miDebuggerPath": "/usr/bin/gdb"
        },
        {
            "name": "Attach to salmanoff (Remote Debug)",
            "type": "cppdbg",
            "request": "attach",
            "program": "${workspaceFolder}/b/salmanoff",
            "processId": "${command:pickProcess}",
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/usr/bin/gdb"
        },
        {
            "name": "Debug salmanoff (Break on Main)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/b/salmanoff",
            "args": ["--help"],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}/b",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set breakpoint on main",
                    "text": "break main",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build-salmanoff",
            "miDebuggerPath": "/usr/bin/gdb"
        },
        {
            "name": "Debug salmanoff (ComponentThread Focus)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/b/salmanoff",
            "args": ["--help"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/b",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set breakpoint on ComponentThread constructor",
                    "text": "break ComponentThread::ComponentThread",
                    "ignoreFailures": true
                },
                {
                    "description": "Set breakpoint on Mind constructor",
                    "text": "break Mind::Mind",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build-salmanoff",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}
