# Command style

For ease of use, HyperDbg uses the same command-style as Windbg, which means there are different kinds of commands in HyperDbg.

‌In HyperDbg we have 3 types of commands , "**regular**", "**meta**", "**extension**".

‌**Regular commands**, e.g., "test", apply to the debugging session. These are the ones controlling and getting information from the debugging target.

‌**Meta commands** are prefixed with a dot, e.g., ".test". Meta commands apply to the debugger itself, meaning that these commands are the ones controlling the debugger itself, not the debugging target.

‌**Extension commands** are prefixed with an exclamation mark, e.g. "!test", which is defined in debugger extensions and features.

‌Here is a full example of a command with a detailed description of each field used in documentation.

{% file src="<https://1255335821-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M2wWz6ePF27bvsJcWed%2Fuploads%2Fgit-blob-f1518a968fbface84998924a55ffe42066daa307%2Fcommandsdocstyle.pdf?alt=media>" %}
Download Command Documentation Style
{% endfile %}

### Command Parameters

HyperDbg uses a static approach for naming the parameter in the debugger help command and the documentation. Here's a brief of how to interpret each field.

Imagine we have the following parameter:

**\[pid ProcessId (hex)] (optional)**

Each word which **lower case** should strictly come after the command. Each word with the **capital case** is the parameter's name in which its type is also mentioned between two parentheses.

If the **(optional)** word is mentioned after the parameter, it is optional, and you can omit it.

```
!test pid 1240
```

Another example,

**\[default]**

As you can see, the default is started with **lower case**, so we should use the command with the `default` keyword.

```
!test default
```
