If you are trying to debug a program running on a machine that cannot run the debugger in the usual way, it is often useful to use remote debugging. For example, you might use remote debugging on an operating system kernel, or on a small system which does not have a general-purpose operating system powerful enough to run a full-featured debugger.
Some configurations of the debugger have special serial or TCP/IP interfaces to make this work with particular debugging targets. In addition, the debugger comes with a generic serial protocol (specific to the debugger, but not specific to any particular target system) which you can use if you write the remote stubs — the code that runs on the remote system to communicate with the debugger.
Other remote targets may be available in your configuration of the debugger; use help target to list them.