{
  "description": "Runs one program under a Valgrind tool with common leak, error and logging options. Arguments for the program itself are not part of this form; add them after the program at the prompt.",
  "options": [
    {
      "names": [
        "--tool"
      ],
      "description": "Tool",
      "args": {
        "name": "tool",
        "isOptional": false,
        "suggestions": [
          {
            "name": "memcheck",
            "description": "memcheck (memory errors, default)"
          },
          {
            "name": "cachegrind",
            "description": "cachegrind"
          },
          {
            "name": "callgrind",
            "description": "callgrind"
          },
          {
            "name": "helgrind",
            "description": "helgrind (threads)"
          },
          {
            "name": "drd",
            "description": "drd (threads)"
          },
          {
            "name": "massif",
            "description": "massif (heap profile)"
          },
          {
            "name": "dhat",
            "description": "dhat"
          }
        ]
      }
    },
    {
      "names": [
        "--leak-check"
      ],
      "description": "Leak check",
      "args": {
        "name": "leak_check",
        "isOptional": false,
        "suggestions": [
          {
            "name": "no",
            "description": "No"
          },
          {
            "name": "summary",
            "description": "Summary"
          },
          {
            "name": "yes",
            "description": "Yes (full)"
          },
          {
            "name": "full",
            "description": "Full"
          }
        ]
      }
    },
    {
      "names": [
        "--show-leak-kinds"
      ],
      "description": "Comma-separated set, e.g. definite,possible or all.",
      "args": {
        "name": "show_leak_kinds",
        "description": "Comma-separated set, e.g. definite,possible or all.",
        "isOptional": false,
        "suggestions": [
          {
            "name": "definite,possible",
            "description": "definite,possible"
          },
          {
            "name": "all",
            "description": "all"
          }
        ]
      }
    },
    {
      "names": [
        "--track-origins"
      ],
      "description": "Track origins of uninitialised values",
      "args": {
        "name": "track_origins",
        "isOptional": false,
        "suggestions": [
          {
            "name": "yes",
            "description": "Yes"
          },
          {
            "name": "no",
            "description": "No"
          }
        ]
      }
    },
    {
      "names": [
        "--trace-children"
      ],
      "description": "Trace child processes",
      "args": {
        "name": "trace_children",
        "isOptional": false,
        "suggestions": [
          {
            "name": "yes",
            "description": "Yes"
          },
          {
            "name": "no",
            "description": "No"
          }
        ]
      }
    },
    {
      "names": [
        "--num-callers"
      ],
      "description": "Stack trace depth",
      "args": {
        "name": "num_callers",
        "isOptional": false
      }
    },
    {
      "names": [
        "--error-exitcode"
      ],
      "description": "Exit code on errors",
      "args": {
        "name": "error_exitcode",
        "isOptional": false
      }
    },
    {
      "names": [
        "--log-file"
      ],
      "description": "Log file",
      "args": {
        "name": "log_file",
        "isOptional": false,
        "template": "filepaths"
      },
      "isDangerous": true
    },
    {
      "names": [
        "--suppressions"
      ],
      "description": "Suppressions file",
      "args": {
        "name": "suppressions",
        "isOptional": false,
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--verbose",
        "-v"
      ],
      "description": "Verbosity",
      "isRepeatable": true
    },
    {
      "names": [
        "--quiet",
        "-q"
      ],
      "description": "Quiet"
    }
  ],
  "args": [
    {
      "name": "program",
      "isOptional": false,
      "template": "filepaths"
    }
  ],
  "name": "valgrind"
}
